diff --git a/resources/sprite/manifest/actions.json b/resources/sprite/manifest/actions.json
index f568ed593c..e781269c9c 100644
--- a/resources/sprite/manifest/actions.json
+++ b/resources/sprite/manifest/actions.json
@@ -1,206 +1,206 @@
 {
   "version" : 1,
   "sprites" : {
     "actions-close-dark"     : {
       "name" : "actions-close-dark",
-      "rule" : ".actions-close-dark, .device-desktop .actions-close-grey.phui-icon-item-link:hover",
-      "hash" : "7604975dc64a124369a3e54a155ba55f"
+      "rule" : ".actions-close-dark, .device-desktop .actions-close-grey.phui-icon-view:hover",
+      "hash" : "d371ba7921b4ff14f2f829b8108abe87"
     },
     "actions-close-grey"     : {
       "name" : "actions-close-grey",
       "rule" : ".actions-close-grey",
-      "hash" : "22d7706066666cf0ba91f5ae4ef96f1f"
+      "hash" : "bec8b545648d31317774e7c2580e3d14"
     },
     "actions-close-white"    : {
       "name" : "actions-close-white",
       "rule" : ".actions-close-white",
-      "hash" : "8d6ad8fc33b0e9471dc2c6d4de6e7341"
+      "hash" : "52067fda0c9664f97dea0e5d9cd792f0"
     },
     "actions-down-dark"      : {
       "name" : "actions-down-dark",
-      "rule" : ".actions-down-dark, .device-desktop .actions-down-grey.phui-icon-item-link:hover",
-      "hash" : "4bb5a5a48eb5886c7d6a46d6618823a9"
+      "rule" : ".actions-down-dark, .device-desktop .actions-down-grey.phui-icon-view:hover",
+      "hash" : "6ee657d4245d2ec7d5b5e61ff2401da1"
     },
     "actions-down-grey"      : {
       "name" : "actions-down-grey",
       "rule" : ".actions-down-grey",
-      "hash" : "5334fe6173a3fe85c4683fe079e03104"
+      "hash" : "146c17409712ba10ce0c567c86f31bf1"
     },
     "actions-down-white"     : {
       "name" : "actions-down-white",
       "rule" : ".actions-down-white",
-      "hash" : "65c4eb9c6b1a897ca7454aea0459db83"
+      "hash" : "dd01d18cca43f2ce2cbaa6f73b8257e1"
     },
     "actions-flag-dark"      : {
       "name" : "actions-flag-dark",
-      "rule" : ".actions-flag-dark, .device-desktop .actions-flag-grey.phui-icon-item-link:hover",
-      "hash" : "4ae54fc28dd2d6cfa6e57dde7bd640cf"
+      "rule" : ".actions-flag-dark, .device-desktop .actions-flag-grey.phui-icon-view:hover",
+      "hash" : "1a8320f19cd7bb44d29ee07b4ff5cfc2"
     },
     "actions-flag-grey"      : {
       "name" : "actions-flag-grey",
       "rule" : ".actions-flag-grey",
-      "hash" : "50e739ca2d6a5527ce2bb8aafd4eb93f"
+      "hash" : "e8a76919b35c51a8436b8cd4c55bc269"
     },
     "actions-flag-white"     : {
       "name" : "actions-flag-white",
       "rule" : ".actions-flag-white",
-      "hash" : "d29ba4e3f88d5b2f3b0ea14754f7b89a"
+      "hash" : "b344aaa6d80104e3d79bf9711fa42c60"
     },
     "actions-heart-dark"     : {
       "name" : "actions-heart-dark",
-      "rule" : ".actions-heart-dark, .device-desktop .actions-heart-grey.phui-icon-item-link:hover",
-      "hash" : "90b437a281724a4961e33272eafd616b"
+      "rule" : ".actions-heart-dark, .device-desktop .actions-heart-grey.phui-icon-view:hover",
+      "hash" : "6f4aeb4a6ab5cca45f4cecbac18e2c13"
     },
     "actions-heart-grey"     : {
       "name" : "actions-heart-grey",
       "rule" : ".actions-heart-grey",
-      "hash" : "cd521a7267b321516223462860373f09"
+      "hash" : "b4ef7c03ccb5a4a0ef55a1a1369357c9"
     },
     "actions-heart-white"    : {
       "name" : "actions-heart-white",
       "rule" : ".actions-heart-white",
-      "hash" : "505ebd7324f9c39fa2366a85996d1194"
+      "hash" : "f0394eb2b30463fafbb77c66332e6eb6"
     },
     "actions-move-dark"      : {
       "name" : "actions-move-dark",
-      "rule" : ".actions-move-dark, .device-desktop .actions-move-grey.phui-icon-item-link:hover",
-      "hash" : "38f5b9168bf04d1a904b09805e589cd7"
+      "rule" : ".actions-move-dark, .device-desktop .actions-move-grey.phui-icon-view:hover",
+      "hash" : "b0bb220c8909368bfd8b161c30ebf9e4"
     },
     "actions-move-grey"      : {
       "name" : "actions-move-grey",
       "rule" : ".actions-move-grey",
-      "hash" : "35dcc45f04a81cbf9e5ecdf0fcd5bebc"
+      "hash" : "80b5c487ee61d5388f172c234d5d6547"
     },
     "actions-move-white"     : {
       "name" : "actions-move-white",
       "rule" : ".actions-move-white",
-      "hash" : "2b1b790a494a079d288d5a3a47c6bd62"
+      "hash" : "c0babe1697ab7753c40efaede8aaf680"
     },
     "actions-new-dark"       : {
       "name" : "actions-new-dark",
-      "rule" : ".actions-new-dark, .device-desktop .actions-new-grey.phui-icon-item-link:hover",
-      "hash" : "52c45b76d0dbd51e6eb65f0597d5098a"
+      "rule" : ".actions-new-dark, .device-desktop .actions-new-grey.phui-icon-view:hover",
+      "hash" : "40e6738b606010c4a4b81decc66e91c7"
     },
     "actions-new-grey"       : {
       "name" : "actions-new-grey",
       "rule" : ".actions-new-grey",
-      "hash" : "c51315bd83a20806625ca3a887f86215"
+      "hash" : "60f78d578fef99834f1a429887524ca2"
     },
     "actions-new-white"      : {
       "name" : "actions-new-white",
       "rule" : ".actions-new-white",
-      "hash" : "5a344c62e037d672516dae0e3a8dd589"
+      "hash" : "b2345dd8353c0ddd2d99775542d62360"
     },
     "actions-search-dark"    : {
       "name" : "actions-search-dark",
-      "rule" : ".actions-search-dark, .device-desktop .actions-search-grey.phui-icon-item-link:hover",
-      "hash" : "6ff124bc9423bf98be5a53e22508cd26"
+      "rule" : ".actions-search-dark, .device-desktop .actions-search-grey.phui-icon-view:hover",
+      "hash" : "ddc5d23c829e17d38ba2ea2cea9fd6c4"
     },
     "actions-search-grey"    : {
       "name" : "actions-search-grey",
       "rule" : ".actions-search-grey",
-      "hash" : "57b5c47c0676da7f97d3b2f7eefbbea4"
+      "hash" : "c6c8214375b3442a890b48a75ee95c0d"
     },
     "actions-search-white"   : {
       "name" : "actions-search-white",
       "rule" : ".actions-search-white",
-      "hash" : "17f1bf9820b0c44f4641e0256840b138"
+      "hash" : "25b9bfb1808547f8b141ea35d7764353"
     },
     "actions-settings-dark"  : {
       "name" : "actions-settings-dark",
-      "rule" : ".actions-settings-dark, .device-desktop .actions-settings-grey.phui-icon-item-link:hover",
-      "hash" : "5ecb08643250a052e5d090ef4660faf5"
+      "rule" : ".actions-settings-dark, .device-desktop .actions-settings-grey.phui-icon-view:hover",
+      "hash" : "7b5abbebcdfec9137c66e36cfad13071"
     },
     "actions-settings-grey"  : {
       "name" : "actions-settings-grey",
       "rule" : ".actions-settings-grey",
-      "hash" : "5aeb35f1019c51a2f9140dc8765c9dca"
+      "hash" : "970decba8ae9bb183d6f090d196c7fc5"
     },
     "actions-settings-white" : {
       "name" : "actions-settings-white",
       "rule" : ".actions-settings-white",
-      "hash" : "8cdd154946f1a8d8d307b72eddd5d755"
+      "hash" : "368c765c374b059ab25e41d1f7204aa8"
     },
     "actions-star-dark"      : {
       "name" : "actions-star-dark",
-      "rule" : ".actions-star-dark, .device-desktop .actions-star-grey.phui-icon-item-link:hover",
-      "hash" : "45567d03f8e34811eca0621e93b5e050"
+      "rule" : ".actions-star-dark, .device-desktop .actions-star-grey.phui-icon-view:hover",
+      "hash" : "17270fb5f28101f65040c854c04a8857"
     },
     "actions-star-grey"      : {
       "name" : "actions-star-grey",
       "rule" : ".actions-star-grey",
-      "hash" : "1c7909e987b64b26b728506695457770"
+      "hash" : "dcbabdf40a79100d51d372ae9e8716ff"
     },
     "actions-star-white"     : {
       "name" : "actions-star-white",
       "rule" : ".actions-star-white",
-      "hash" : "e7c949542a54a347879ceb96f42a3c02"
+      "hash" : "845ce22ed1e7eeed4f45047fa9325ab3"
     },
     "actions-tag-dark"       : {
       "name" : "actions-tag-dark",
-      "rule" : ".actions-tag-dark, .device-desktop .actions-tag-grey.phui-icon-item-link:hover",
-      "hash" : "24d97fa7524d0bf1bac17d9e07a63f48"
+      "rule" : ".actions-tag-dark, .device-desktop .actions-tag-grey.phui-icon-view:hover",
+      "hash" : "b5dbc809ac52d464e5bf29c84c2d9a29"
     },
     "actions-tag-grey"       : {
       "name" : "actions-tag-grey",
       "rule" : ".actions-tag-grey",
-      "hash" : "f04a5b38209c0f8e9ad2a3a964d5d505"
+      "hash" : "0558ef19806b5f89d2af585178c4afc1"
     },
     "actions-tag-white"      : {
       "name" : "actions-tag-white",
       "rule" : ".actions-tag-white",
-      "hash" : "fdfc5d20f6a0d90b6d329159823d2cb0"
+      "hash" : "ecd4ae0949552a9bae0fe277408a77d8"
     },
     "actions-token-dark"     : {
       "name" : "actions-token-dark",
-      "rule" : ".actions-token-dark, .device-desktop .actions-token-grey.phui-icon-item-link:hover",
-      "hash" : "e7f973c27cc60cbd730e60779e07e7f2"
+      "rule" : ".actions-token-dark, .device-desktop .actions-token-grey.phui-icon-view:hover",
+      "hash" : "454c1afb874dec4f1df5695e7eff7326"
     },
     "actions-token-grey"     : {
       "name" : "actions-token-grey",
       "rule" : ".actions-token-grey",
-      "hash" : "aede0f8cdf5b4d568ab57fc44fbeeaf6"
+      "hash" : "04d9fc2dd373804d00b60a576d6cc94f"
     },
     "actions-token-white"    : {
       "name" : "actions-token-white",
       "rule" : ".actions-token-white",
-      "hash" : "78a34242d2fecf78a4d6eba6dafff452"
+      "hash" : "0354f489a9f1bafd9d88181c7e8959ff"
     },
     "actions-up-dark"        : {
       "name" : "actions-up-dark",
-      "rule" : ".actions-up-dark, .device-desktop .actions-up-grey.phui-icon-item-link:hover",
-      "hash" : "c3899cd39cbfb47d442d157e78deaff6"
+      "rule" : ".actions-up-dark, .device-desktop .actions-up-grey.phui-icon-view:hover",
+      "hash" : "f922e6b5ddde61c63cb25fc69f29ac59"
     },
     "actions-up-grey"        : {
       "name" : "actions-up-grey",
       "rule" : ".actions-up-grey",
-      "hash" : "534a185d53a991616a0bfff2c619625c"
+      "hash" : "188470ed37fbee2bedf8cf099601b2cc"
     },
     "actions-up-white"       : {
       "name" : "actions-up-white",
       "rule" : ".actions-up-white",
-      "hash" : "42e27f001c90d17c806b7dc6f5da1535"
+      "hash" : "a34868ad7c6af02b8bba5c2c67f261b0"
     },
     "actions-wrench-dark"    : {
       "name" : "actions-wrench-dark",
-      "rule" : ".actions-wrench-dark, .device-desktop .actions-wrench-grey.phui-icon-item-link:hover",
-      "hash" : "3a5cfa463c3c89194d3bbce3952a6e80"
+      "rule" : ".actions-wrench-dark, .device-desktop .actions-wrench-grey.phui-icon-view:hover",
+      "hash" : "376d45f6796291816d2a4679021e2181"
     },
     "actions-wrench-grey"    : {
       "name" : "actions-wrench-grey",
       "rule" : ".actions-wrench-grey",
-      "hash" : "40d8a77d6272589c69f65e9b5e5587e1"
+      "hash" : "ac1cf1f6a12367eb3a5a3b36e400b26d"
     },
     "actions-wrench-white"   : {
       "name" : "actions-wrench-white",
       "rule" : ".actions-wrench-white",
-      "hash" : "20ee83ae6a5d0dc6918727b6ccacec67"
+      "hash" : "5ed6e55f0b52949fe02bde899ce86b34"
     }
   },
   "scales"  : [
     1,
     2
   ],
   "header"  : "\/**\n * @provides sprite-actions-css\n * @generated\n *\/\n\n.sprite-actions {\n  background-image: url(\/rsrc\/image\/sprite-actions.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-actions {\n    background-image: url(\/rsrc\/image\/sprite-actions-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/apps-large.json b/resources/sprite/manifest/apps-large.json
index df2c7085b0..0369695368 100644
--- a/resources/sprite/manifest/apps-large.json
+++ b/resources/sprite/manifest/apps-large.json
@@ -1,761 +1,761 @@
 {
   "version" : 1,
   "sprites" : {
     "apps-adventure-blue-large"     : {
       "name" : "apps-adventure-blue-large",
       "rule" : ".apps-adventure-blue-large, .phabricator-crumb-view:hover .apps-adventure-dark-large",
-      "hash" : "0091f89dfc6dd79ef00f43f586800d99"
+      "hash" : "fce0509297387130d3b7a87162e63ff4"
     },
     "apps-adventure-dark-large"     : {
       "name" : "apps-adventure-dark-large",
       "rule" : ".apps-adventure-dark-large",
-      "hash" : "41b8fdf2fe9ba6f84f345784278d4a8e"
+      "hash" : "9601cda7fce2b80f48be28f70cffa135"
     },
     "apps-adventure-light-large"    : {
       "name" : "apps-adventure-light-large",
       "rule" : ".apps-adventure-light-large",
-      "hash" : "0f0bea9ca7956e4edfd029679455aee4"
+      "hash" : "1a63567ba1eed09b9c468d087f0d8db6"
     },
     "apps-application-blue-large"   : {
       "name" : "apps-application-blue-large",
       "rule" : ".apps-application-blue-large, .phabricator-crumb-view:hover .apps-application-dark-large",
-      "hash" : "80f42a283979cef89577721ca6d9cdef"
+      "hash" : "c8e0319f0c8a3c19bb74391785149424"
     },
     "apps-application-dark-large"   : {
       "name" : "apps-application-dark-large",
       "rule" : ".apps-application-dark-large",
-      "hash" : "8ab1619bcb768cc1b85106b077d29522"
+      "hash" : "a5a904b67bdd26c15b8df07b0b0cee1a"
     },
     "apps-application-light-large"  : {
       "name" : "apps-application-light-large",
       "rule" : ".apps-application-light-large",
-      "hash" : "09d4ef0cb36255291693971754ec55ee"
+      "hash" : "8b071cf0efedda7c8c772829d31453ea"
     },
     "apps-audit-blue-large"         : {
       "name" : "apps-audit-blue-large",
       "rule" : ".apps-audit-blue-large, .phabricator-crumb-view:hover .apps-audit-dark-large",
-      "hash" : "05941dc7d5ff156c0e899c6345f6833a"
+      "hash" : "cfb6e6c27d6bf4bbf2e07c8d284948d7"
     },
     "apps-audit-dark-large"         : {
       "name" : "apps-audit-dark-large",
       "rule" : ".apps-audit-dark-large",
-      "hash" : "cbf8e6c5a580bd3b5169f30d3cd0ec6a"
+      "hash" : "0880246fc6aa5d0cec823166af5b388f"
     },
     "apps-audit-light-large"        : {
       "name" : "apps-audit-light-large",
       "rule" : ".apps-audit-light-large",
-      "hash" : "aa853bebb7a315b994f1527247e3b362"
+      "hash" : "8dd753f716233d2f6edf553df4fde942"
     },
     "apps-calendar-blue-large"      : {
       "name" : "apps-calendar-blue-large",
       "rule" : ".apps-calendar-blue-large, .phabricator-crumb-view:hover .apps-calendar-dark-large",
-      "hash" : "9e530feec2926878ee7eaa8a04a8607b"
+      "hash" : "a05add9fa18df8a98cf2735cf27ec6e1"
     },
     "apps-calendar-dark-large"      : {
       "name" : "apps-calendar-dark-large",
       "rule" : ".apps-calendar-dark-large",
-      "hash" : "65de91c173d169bbf407c9e7cefa9715"
+      "hash" : "5c98faf324152ec55bad6ac76f77ec00"
     },
     "apps-calendar-light-large"     : {
       "name" : "apps-calendar-light-large",
       "rule" : ".apps-calendar-light-large",
-      "hash" : "043dab56a011f84f5affc2c7c13e3a39"
+      "hash" : "466b97737778eff91ebd9afabac6e5a6"
     },
     "apps-chatlog-blue-large"       : {
       "name" : "apps-chatlog-blue-large",
       "rule" : ".apps-chatlog-blue-large, .phabricator-crumb-view:hover .apps-chatlog-dark-large",
-      "hash" : "f94218d08f45ae867f022d9dcfaeeeeb"
+      "hash" : "9366df4f3e53b6eee108a22ae57bc507"
     },
     "apps-chatlog-dark-large"       : {
       "name" : "apps-chatlog-dark-large",
       "rule" : ".apps-chatlog-dark-large",
-      "hash" : "8627b911e1bb79209cbaa849448821fb"
+      "hash" : "79639fd4c0cd0d9127fd5d0f6e695554"
     },
     "apps-chatlog-light-large"      : {
       "name" : "apps-chatlog-light-large",
       "rule" : ".apps-chatlog-light-large",
-      "hash" : "a800aaa83f87dc184ef071561eacd354"
+      "hash" : "2176ade2d11cc02bdb6bcb0470428de3"
     },
     "apps-conduit-blue-large"       : {
       "name" : "apps-conduit-blue-large",
       "rule" : ".apps-conduit-blue-large, .phabricator-crumb-view:hover .apps-conduit-dark-large",
-      "hash" : "4ab937882a119bacc0206029cbd7919d"
+      "hash" : "ed8208ab196da7da6160edbdb0be118a"
     },
     "apps-conduit-dark-large"       : {
       "name" : "apps-conduit-dark-large",
       "rule" : ".apps-conduit-dark-large",
-      "hash" : "34de5192c69af7a9cf3941f7b5cb088e"
+      "hash" : "bad7559ed9928596c0241d8490e67422"
     },
     "apps-conduit-light-large"      : {
       "name" : "apps-conduit-light-large",
       "rule" : ".apps-conduit-light-large",
-      "hash" : "a2fd3cfe6e4e46d589e0e99f52e7f6f0"
+      "hash" : "92047e758fac063dfb0608863ee66b7e"
     },
     "apps-conpherence-blue-large"   : {
       "name" : "apps-conpherence-blue-large",
       "rule" : ".apps-conpherence-blue-large, .phabricator-crumb-view:hover .apps-conpherence-dark-large",
-      "hash" : "efcf3788ac60484d5920b37c1560e565"
+      "hash" : "6b84241639e4755b450085f7eeb30cb1"
     },
     "apps-conpherence-dark-large"   : {
       "name" : "apps-conpherence-dark-large",
       "rule" : ".apps-conpherence-dark-large",
-      "hash" : "2722117e3da8c2dbc478d957fb21ca53"
+      "hash" : "d9ced45f6ce7ffec0a0edb17c5e63834"
     },
     "apps-conpherence-light-large"  : {
       "name" : "apps-conpherence-light-large",
       "rule" : ".apps-conpherence-light-large",
-      "hash" : "a79e5f0094caf9f012f3e9d7a10f2bac"
+      "hash" : "d85a049c1742fec1f95a8ebb6ca5c944"
     },
     "apps-countdown-blue-large"     : {
       "name" : "apps-countdown-blue-large",
       "rule" : ".apps-countdown-blue-large, .phabricator-crumb-view:hover .apps-countdown-dark-large",
-      "hash" : "a4079b8e55924b7590011b35ba9bfdb0"
+      "hash" : "d44b7acae6b6b052ac869f0176b66b89"
     },
     "apps-countdown-dark-large"     : {
       "name" : "apps-countdown-dark-large",
       "rule" : ".apps-countdown-dark-large",
-      "hash" : "25547923eb9927ed0c30804fafd471d3"
+      "hash" : "dc7df8202a5fa7baf17fd446a9b5c4c5"
     },
     "apps-countdown-light-large"    : {
       "name" : "apps-countdown-light-large",
       "rule" : ".apps-countdown-light-large",
-      "hash" : "24bac143e049862bed161d819990cee0"
+      "hash" : "8f3814f70c1cb0475dd4678cc8937d91"
     },
     "apps-daemon-blue-large"        : {
       "name" : "apps-daemon-blue-large",
       "rule" : ".apps-daemon-blue-large, .phabricator-crumb-view:hover .apps-daemon-dark-large",
-      "hash" : "beb6586864ef67a7bd7a9a159b8c2a56"
+      "hash" : "c922a7e7ec9467ca48b2a2573904b7ce"
     },
     "apps-daemon-dark-large"        : {
       "name" : "apps-daemon-dark-large",
       "rule" : ".apps-daemon-dark-large",
-      "hash" : "cf2e12b2967d155c437862bbb9ce2d86"
+      "hash" : "b2e566baac0c579563bd5bd700deb41b"
     },
     "apps-daemon-light-large"       : {
       "name" : "apps-daemon-light-large",
       "rule" : ".apps-daemon-light-large",
-      "hash" : "44328612154fbf1a2f0f6ff28cd23521"
+      "hash" : "9c778b43f9f7380fc9bd862c097bbaa8"
     },
     "apps-differential-blue-large"  : {
       "name" : "apps-differential-blue-large",
       "rule" : ".apps-differential-blue-large, .phabricator-crumb-view:hover .apps-differential-dark-large",
-      "hash" : "9491284c8cbf77df0795bdf9cd16651e"
+      "hash" : "59049df6a30c816ea68d3025da79a091"
     },
     "apps-differential-dark-large"  : {
       "name" : "apps-differential-dark-large",
       "rule" : ".apps-differential-dark-large",
-      "hash" : "a4b2ac4d4f697896e3abe9e58501fea5"
+      "hash" : "fd1e0f1fa97b00c7409ebfdc56cf4865"
     },
     "apps-differential-light-large" : {
       "name" : "apps-differential-light-large",
       "rule" : ".apps-differential-light-large",
-      "hash" : "a763d63d22cac8226d8bd5656221a91b"
+      "hash" : "b5c750e09f57a787e89f32820f791c4a"
     },
     "apps-diffusion-blue-large"     : {
       "name" : "apps-diffusion-blue-large",
       "rule" : ".apps-diffusion-blue-large, .phabricator-crumb-view:hover .apps-diffusion-dark-large",
-      "hash" : "35e35c07ca1a151c810bb38a90496a2d"
+      "hash" : "b982cfacfde43d3267082bca236bc72c"
     },
     "apps-diffusion-dark-large"     : {
       "name" : "apps-diffusion-dark-large",
       "rule" : ".apps-diffusion-dark-large",
-      "hash" : "5b3752babd557f2c9bbc0120bd9a0747"
+      "hash" : "2eb71cde4af83347efdee542f4cadd8e"
     },
     "apps-diffusion-light-large"    : {
       "name" : "apps-diffusion-light-large",
       "rule" : ".apps-diffusion-light-large",
-      "hash" : "1f04606fe4f0650982327bf09bf5adc0"
+      "hash" : "6eeb6f6df3ecd1ee923081b2d82f0505"
     },
     "apps-diviner-blue-large"       : {
       "name" : "apps-diviner-blue-large",
       "rule" : ".apps-diviner-blue-large, .phabricator-crumb-view:hover .apps-diviner-dark-large",
-      "hash" : "97f1242c914315cf773c27bbec964335"
+      "hash" : "bda64f504c0c2c34125758bd01c80e05"
     },
     "apps-diviner-dark-large"       : {
       "name" : "apps-diviner-dark-large",
       "rule" : ".apps-diviner-dark-large",
-      "hash" : "c4f0550826f60fcd48d6ebcd340184b4"
+      "hash" : "786a865464564d66d458557c909a77ea"
     },
     "apps-diviner-light-large"      : {
       "name" : "apps-diviner-light-large",
       "rule" : ".apps-diviner-light-large",
-      "hash" : "b13413ada716fa7d3449c38b11decd5d"
+      "hash" : "c515bc52cb560adebce1e84bb5d917ce"
     },
     "apps-drydock-blue-large"       : {
       "name" : "apps-drydock-blue-large",
       "rule" : ".apps-drydock-blue-large, .phabricator-crumb-view:hover .apps-drydock-dark-large",
-      "hash" : "a63aaba405583e356f00af6bc1dedfad"
+      "hash" : "ba82e330a78dd60df033560e083601cf"
     },
     "apps-drydock-dark-large"       : {
       "name" : "apps-drydock-dark-large",
       "rule" : ".apps-drydock-dark-large",
-      "hash" : "a97be15640a38db803cc03215968e856"
+      "hash" : "7a41b9668c77b85b8acf048d9e61c50a"
     },
     "apps-drydock-light-large"      : {
       "name" : "apps-drydock-light-large",
       "rule" : ".apps-drydock-light-large",
-      "hash" : "712c8fa45f964e0c4cbb69321fd1fded"
+      "hash" : "2c1ce32d5d5291e7d3d3d6e9323a2a65"
     },
     "apps-fact-blue-large"          : {
       "name" : "apps-fact-blue-large",
       "rule" : ".apps-fact-blue-large, .phabricator-crumb-view:hover .apps-fact-dark-large",
-      "hash" : "4b07b51e2178f12533c04c55d522d9e5"
+      "hash" : "1e2b911cb36b0d44384487e348892ccc"
     },
     "apps-fact-dark-large"          : {
       "name" : "apps-fact-dark-large",
       "rule" : ".apps-fact-dark-large",
-      "hash" : "6040fe830d8f0868cdb38ee2b8ee16ac"
+      "hash" : "5fb4a988baad433e9900f1a814b89caa"
     },
     "apps-fact-light-large"         : {
       "name" : "apps-fact-light-large",
       "rule" : ".apps-fact-light-large",
-      "hash" : "8253f813361ba065866ee6e6e2077320"
+      "hash" : "3bc45d399dad8ec8d55873714c42c1d7"
     },
     "apps-feed-blue-large"          : {
       "name" : "apps-feed-blue-large",
       "rule" : ".apps-feed-blue-large, .phabricator-crumb-view:hover .apps-feed-dark-large",
-      "hash" : "462246f99422c86301b7d4faa67d9488"
+      "hash" : "3bcdec795b38002644a8009c927a0acc"
     },
     "apps-feed-dark-large"          : {
       "name" : "apps-feed-dark-large",
       "rule" : ".apps-feed-dark-large",
-      "hash" : "0eecff752dc5dde55e7feaa52b7ee7d0"
+      "hash" : "e83834eccc699399b604069b95465cff"
     },
     "apps-feed-light-large"         : {
       "name" : "apps-feed-light-large",
       "rule" : ".apps-feed-light-large",
-      "hash" : "2ec6e12956fe1e1b746261bb3d0a0d36"
+      "hash" : "e3a8add13539550ddaab62f84b30dd66"
     },
     "apps-files-blue-large"         : {
       "name" : "apps-files-blue-large",
       "rule" : ".apps-files-blue-large, .phabricator-crumb-view:hover .apps-files-dark-large",
-      "hash" : "f9217c49be154a830303285ae64790c8"
+      "hash" : "4505af3a9261a1ee4e00bf1d046286dd"
     },
     "apps-files-dark-large"         : {
       "name" : "apps-files-dark-large",
       "rule" : ".apps-files-dark-large",
-      "hash" : "78fb66b9edc99c3694325548582f0506"
+      "hash" : "1d229c79f3b8301ca1ee38ccd9c7c142"
     },
     "apps-files-light-large"        : {
       "name" : "apps-files-light-large",
       "rule" : ".apps-files-light-large",
-      "hash" : "ee5503d0684ea20be40023a29589d322"
+      "hash" : "0d8bf609759312d89e2a4b148f0701d8"
     },
     "apps-flags-blue-large"         : {
       "name" : "apps-flags-blue-large",
       "rule" : ".apps-flags-blue-large, .phabricator-crumb-view:hover .apps-flags-dark-large",
-      "hash" : "8bbdefdaba30bf6a020f8515ee33d452"
+      "hash" : "a6f52b520f88e4ef60b7a76fb3c2c597"
     },
     "apps-flags-dark-large"         : {
       "name" : "apps-flags-dark-large",
       "rule" : ".apps-flags-dark-large",
-      "hash" : "c6824e1362ec59ccf9ad8f451da466c1"
+      "hash" : "51307234bb3c309b3ea69381e0b72b16"
     },
     "apps-flags-light-large"        : {
       "name" : "apps-flags-light-large",
       "rule" : ".apps-flags-light-large",
-      "hash" : "4a40dc3e18011a8283840e5dfbe14dc9"
+      "hash" : "8c198ba5bcd146595870bab777d4992e"
     },
     "apps-harbormaster-blue-large"  : {
       "name" : "apps-harbormaster-blue-large",
       "rule" : ".apps-harbormaster-blue-large, .phabricator-crumb-view:hover .apps-harbormaster-dark-large",
-      "hash" : "d30d95294ba5825660d1507d4d8efda8"
+      "hash" : "23dff5183214e9fdc9f5dafceb146dbd"
     },
     "apps-harbormaster-dark-large"  : {
       "name" : "apps-harbormaster-dark-large",
       "rule" : ".apps-harbormaster-dark-large",
-      "hash" : "bfe4b9440da4eabe823a3fa41e61d6b8"
+      "hash" : "273fd2cb242a49c6289f7e2ad029d260"
     },
     "apps-harbormaster-light-large" : {
       "name" : "apps-harbormaster-light-large",
       "rule" : ".apps-harbormaster-light-large",
-      "hash" : "00aa15b116689f10f6af8c13307fb483"
+      "hash" : "1019ed387478b0e6dfda7389dc0c5181"
     },
     "apps-help-blue-large"          : {
       "name" : "apps-help-blue-large",
       "rule" : ".apps-help-blue-large, .phabricator-crumb-view:hover .apps-help-dark-large",
-      "hash" : "703f8c674cdd22f1314ffe8977acf35b"
+      "hash" : "a74c4f436b2e70c0e06f4224953d064a"
     },
     "apps-help-dark-large"          : {
       "name" : "apps-help-dark-large",
       "rule" : ".apps-help-dark-large",
-      "hash" : "601aaf7047f9db41baf7e3393b0d7aeb"
+      "hash" : "3cbd366c4b5758e45ef07507c70f68c0"
     },
     "apps-help-light-large"         : {
       "name" : "apps-help-light-large",
       "rule" : ".apps-help-light-large",
-      "hash" : "c17b8e6228f844777177c5070e17dd91"
+      "hash" : "722eceffe63605b00a5b957b5f40db98"
     },
     "apps-herald-blue-large"        : {
       "name" : "apps-herald-blue-large",
       "rule" : ".apps-herald-blue-large, .phabricator-crumb-view:hover .apps-herald-dark-large",
-      "hash" : "4bf9b4b872e7207d66c6e80dcad47b0e"
+      "hash" : "9edfe47e8f1f2c4f1071f4d8b6ed346d"
     },
     "apps-herald-dark-large"        : {
       "name" : "apps-herald-dark-large",
       "rule" : ".apps-herald-dark-large",
-      "hash" : "e19fd614bf5f904603517df957165b22"
+      "hash" : "4b7a3ab5e0b6a04224ccb6e520e73d6e"
     },
     "apps-herald-light-large"       : {
       "name" : "apps-herald-light-large",
       "rule" : ".apps-herald-light-large",
-      "hash" : "81af2b9899db0b5c877d96016ddfa1a1"
+      "hash" : "65bbeb68fd051b77f4871aafe2994f56"
     },
     "apps-home-blue-large"          : {
       "name" : "apps-home-blue-large",
       "rule" : ".apps-home-blue-large, .phabricator-crumb-view:hover .apps-home-dark-large",
-      "hash" : "7011cb276b9d7d1f042d2f0393a74312"
+      "hash" : "7df64082c33dcc3d2263772c0393be70"
     },
     "apps-home-dark-large"          : {
       "name" : "apps-home-dark-large",
       "rule" : ".apps-home-dark-large",
-      "hash" : "6b7f677ad630593900132f6271c41cb4"
+      "hash" : "79acb839094adcb3ad94567c054801eb"
     },
     "apps-home-light-large"         : {
       "name" : "apps-home-light-large",
       "rule" : ".apps-home-light-large",
-      "hash" : "f0740b16cd3746a1234070f1785c03eb"
+      "hash" : "181a71639319f3beda59809963384250"
     },
     "apps-logo-blue-large"          : {
       "name" : "apps-logo-blue-large",
       "rule" : ".apps-logo-blue-large, .phabricator-crumb-view:hover .apps-logo-dark-large",
-      "hash" : "64a8124698f9441f50230f3a63364dd7"
+      "hash" : "025f46665b079f5899ec53be09165d09"
     },
     "apps-logo-dark-large"          : {
       "name" : "apps-logo-dark-large",
       "rule" : ".apps-logo-dark-large",
-      "hash" : "8023a60fcba24c3f200214152a62a2c3"
+      "hash" : "20524d2868b7b57423aa8dc27b284cac"
     },
     "apps-logo-light-large"         : {
       "name" : "apps-logo-light-large",
       "rule" : ".apps-logo-light-large",
-      "hash" : "52fc06fb90f7ec1c29498069b1a059b2"
+      "hash" : "bd1b66ffad9ee26019738fc00a7eb343"
     },
     "apps-macro-blue-large"         : {
       "name" : "apps-macro-blue-large",
       "rule" : ".apps-macro-blue-large, .phabricator-crumb-view:hover .apps-macro-dark-large",
-      "hash" : "50c14fec9a7f913c8aa4a2793bf2867c"
+      "hash" : "a6116a196718bf6cd5337b4c49de710e"
     },
     "apps-macro-dark-large"         : {
       "name" : "apps-macro-dark-large",
       "rule" : ".apps-macro-dark-large",
-      "hash" : "890cde6b9407d00c6394d446974674ff"
+      "hash" : "583a495f319fb63f99400b0197832dce"
     },
     "apps-macro-light-large"        : {
       "name" : "apps-macro-light-large",
       "rule" : ".apps-macro-light-large",
-      "hash" : "7dcba4f0560b9e197849f5540b7ec66d"
+      "hash" : "b073066348826c93f57ba76f746e5c7e"
     },
     "apps-mail-blue-large"          : {
       "name" : "apps-mail-blue-large",
       "rule" : ".apps-mail-blue-large, .phabricator-crumb-view:hover .apps-mail-dark-large",
-      "hash" : "a0a94c194794bb435ea3152ecb2cd42d"
+      "hash" : "192f85bd7a5be296de7acff9bbc9bd1d"
     },
     "apps-mail-dark-large"          : {
       "name" : "apps-mail-dark-large",
       "rule" : ".apps-mail-dark-large",
-      "hash" : "1a1437047fd24b9bb2643435185b6f13"
+      "hash" : "4709516a74216e0ba886a30180ad93d4"
     },
     "apps-mail-light-large"         : {
       "name" : "apps-mail-light-large",
       "rule" : ".apps-mail-light-large",
-      "hash" : "27aec2b8d5bd1fb7eba00ffbaacf1930"
+      "hash" : "740ea3d3104365ab7bad981b13d23693"
     },
     "apps-maniphest-blue-large"     : {
       "name" : "apps-maniphest-blue-large",
       "rule" : ".apps-maniphest-blue-large, .phabricator-crumb-view:hover .apps-maniphest-dark-large",
-      "hash" : "619ff6fea2c90a8d70b000ed0ece6e4b"
+      "hash" : "d667667cc5216ff510cb58c359ffc2a4"
     },
     "apps-maniphest-dark-large"     : {
       "name" : "apps-maniphest-dark-large",
       "rule" : ".apps-maniphest-dark-large",
-      "hash" : "7a204fc2f4779eff27847bf799652140"
+      "hash" : "acadb7737b24ecc23e892cdaab7c1fe2"
     },
     "apps-maniphest-light-large"    : {
       "name" : "apps-maniphest-light-large",
       "rule" : ".apps-maniphest-light-large",
-      "hash" : "90ea395741410840b1b4a974f802b06c"
+      "hash" : "0d2c71a1279686c3884c267d98bc36ba"
     },
     "apps-metamta-blue-large"       : {
       "name" : "apps-metamta-blue-large",
       "rule" : ".apps-metamta-blue-large, .phabricator-crumb-view:hover .apps-metamta-dark-large",
-      "hash" : "48af88efc2887cc985f09d5202922df0"
+      "hash" : "1757d281dcdbdf221ca2b2e90993dba8"
     },
     "apps-metamta-dark-large"       : {
       "name" : "apps-metamta-dark-large",
       "rule" : ".apps-metamta-dark-large",
-      "hash" : "bf18a2c7ef31e72dc9ce6695035baf60"
+      "hash" : "c5f3a7468d98ebb977bfb0cc81abd5ee"
     },
     "apps-metamta-light-large"      : {
       "name" : "apps-metamta-light-large",
       "rule" : ".apps-metamta-light-large",
-      "hash" : "720cc7f66ab36770998aa4fe9ad22785"
+      "hash" : "13ce4ca0f223cda37e3af39da8c6e564"
     },
     "apps-owners-blue-large"        : {
       "name" : "apps-owners-blue-large",
       "rule" : ".apps-owners-blue-large, .phabricator-crumb-view:hover .apps-owners-dark-large",
-      "hash" : "ee909b2d51a3c52b38c0cca3da8d861d"
+      "hash" : "585c128af418f94b8fbf18206605ec84"
     },
     "apps-owners-dark-large"        : {
       "name" : "apps-owners-dark-large",
       "rule" : ".apps-owners-dark-large",
-      "hash" : "05a6fcc603b5ee346d25b1fb25e7e695"
+      "hash" : "b09a80f307491acbe56fb16e01956173"
     },
     "apps-owners-light-large"       : {
       "name" : "apps-owners-light-large",
       "rule" : ".apps-owners-light-large",
-      "hash" : "2d6b3f02f210c73242d91bdb9ef8456c"
+      "hash" : "6b06493f46a91584e746e5034be15366"
     },
     "apps-paste-blue-large"         : {
       "name" : "apps-paste-blue-large",
       "rule" : ".apps-paste-blue-large, .phabricator-crumb-view:hover .apps-paste-dark-large",
-      "hash" : "2ce99237cc2f064f0aa48fb1d147c781"
+      "hash" : "4a14c100c5b78282712dd2cc619d72b4"
     },
     "apps-paste-dark-large"         : {
       "name" : "apps-paste-dark-large",
       "rule" : ".apps-paste-dark-large",
-      "hash" : "f566e3e0c8e6a17b7c2fc4168b079ede"
+      "hash" : "03d3dded4964e60771c8a45549e13973"
     },
     "apps-paste-light-large"        : {
       "name" : "apps-paste-light-large",
       "rule" : ".apps-paste-light-large",
-      "hash" : "e77a206e1cbaf1417b4a0b9f3d67380a"
+      "hash" : "66f1f8fe7acafaab5f608598589aaa5c"
     },
     "apps-people-blue-large"        : {
       "name" : "apps-people-blue-large",
       "rule" : ".apps-people-blue-large, .phabricator-crumb-view:hover .apps-people-dark-large",
-      "hash" : "37fcac5bc4ad63c37d68da2c77717301"
+      "hash" : "ed242e94b2b5698fd90261ca63aef8a6"
     },
     "apps-people-dark-large"        : {
       "name" : "apps-people-dark-large",
       "rule" : ".apps-people-dark-large",
-      "hash" : "01fb27eba95c01d1aadde04ea4513caa"
+      "hash" : "b1748b3a5afacd4f8afcd5ea37352dc7"
     },
     "apps-people-light-large"       : {
       "name" : "apps-people-light-large",
       "rule" : ".apps-people-light-large",
-      "hash" : "d1d80fddc9e6295494d12b72b4700dc5"
+      "hash" : "f6efcbdbcee02f9f37f92774b4b0e4cf"
     },
     "apps-phage-blue-large"         : {
       "name" : "apps-phage-blue-large",
       "rule" : ".apps-phage-blue-large, .phabricator-crumb-view:hover .apps-phage-dark-large",
-      "hash" : "5edd34b3919928cf2a053637d418f43e"
+      "hash" : "de2d28549b5cc63de38e6c5ee737c0db"
     },
     "apps-phage-dark-large"         : {
       "name" : "apps-phage-dark-large",
       "rule" : ".apps-phage-dark-large",
-      "hash" : "3c9e1936e258b171a1fecabb12b933a0"
+      "hash" : "99d1695b116c4c3ca83d7ab46c3444eb"
     },
     "apps-phage-light-large"        : {
       "name" : "apps-phage-light-large",
       "rule" : ".apps-phage-light-large",
-      "hash" : "68f6a58eb9ea1d9a0c8a307896d4d75e"
+      "hash" : "ff49412c963e9be84cd80e6fdaf6ed15"
     },
     "apps-phame-blue-large"         : {
       "name" : "apps-phame-blue-large",
       "rule" : ".apps-phame-blue-large, .phabricator-crumb-view:hover .apps-phame-dark-large",
-      "hash" : "38f1b6a1304118024f10f2a142cfd16a"
+      "hash" : "fc00229e5048dbf8a052672d3b16db4f"
     },
     "apps-phame-dark-large"         : {
       "name" : "apps-phame-dark-large",
       "rule" : ".apps-phame-dark-large",
-      "hash" : "7bfe54cf7d885985fb7e06ad0abaf4e9"
+      "hash" : "a7cf2f8ec22cdb675a3bc792c7c1edf6"
     },
     "apps-phame-light-large"        : {
       "name" : "apps-phame-light-large",
       "rule" : ".apps-phame-light-large",
-      "hash" : "0d32c7172aa931201373c7f2a5e7fd55"
+      "hash" : "560e27bd924e9359dfdb4bde7a18020c"
     },
     "apps-phid-blue-large"          : {
       "name" : "apps-phid-blue-large",
       "rule" : ".apps-phid-blue-large, .phabricator-crumb-view:hover .apps-phid-dark-large",
-      "hash" : "d726ca94608547ff3974a1d49e6b1012"
+      "hash" : "b94bc233e1bcf520c65351b71794c228"
     },
     "apps-phid-dark-large"          : {
       "name" : "apps-phid-dark-large",
       "rule" : ".apps-phid-dark-large",
-      "hash" : "04af0c932bea8b7c36f6dc954994ea11"
+      "hash" : "f4dfdcc8e1fde50cfcb7e07376696964"
     },
     "apps-phid-light-large"         : {
       "name" : "apps-phid-light-large",
       "rule" : ".apps-phid-light-large",
-      "hash" : "0ba23a08c29e8064fdddee9112c638e3"
+      "hash" : "0087c573b07d8badaeadcb8ad560ae9b"
     },
     "apps-phlux-blue-large"         : {
       "name" : "apps-phlux-blue-large",
       "rule" : ".apps-phlux-blue-large, .phabricator-crumb-view:hover .apps-phlux-dark-large",
-      "hash" : "26e7fd98ae64be7b7401f637ef68ca11"
+      "hash" : "c2d2b5067d410b498809a1386355e166"
     },
     "apps-phlux-dark-large"         : {
       "name" : "apps-phlux-dark-large",
       "rule" : ".apps-phlux-dark-large",
-      "hash" : "4b385c645e4d1dd1407c7dafc0d65829"
+      "hash" : "d48817f5a2271db2881a4c1d34e92c94"
     },
     "apps-phlux-light-large"        : {
       "name" : "apps-phlux-light-large",
       "rule" : ".apps-phlux-light-large",
-      "hash" : "58663b174c01bc42bb0895db90342b73"
+      "hash" : "79faf4c26863d619cac1265382739f95"
     },
     "apps-pholio-blue-large"        : {
       "name" : "apps-pholio-blue-large",
       "rule" : ".apps-pholio-blue-large, .phabricator-crumb-view:hover .apps-pholio-dark-large",
-      "hash" : "08bfdf63411a09e6be88d99128c1e9f8"
+      "hash" : "5b8e3f47a49a0dee84c1b7c228884f0c"
     },
     "apps-pholio-dark-large"        : {
       "name" : "apps-pholio-dark-large",
       "rule" : ".apps-pholio-dark-large",
-      "hash" : "2a8bfa3870726691766fe3f6cb73df38"
+      "hash" : "4a73276e5bcd9cfbb08435ed36051dff"
     },
     "apps-pholio-light-large"       : {
       "name" : "apps-pholio-light-large",
       "rule" : ".apps-pholio-light-large",
-      "hash" : "9a4d4223e6e1d7a77c4545504ea0908c"
+      "hash" : "1a3ace478c2b0f9b444005112e17c695"
     },
     "apps-phortune-blue-large"      : {
       "name" : "apps-phortune-blue-large",
       "rule" : ".apps-phortune-blue-large, .phabricator-crumb-view:hover .apps-phortune-dark-large",
-      "hash" : "962a63b8b67a2881b0cd0313887cf139"
+      "hash" : "d0d52348d19d0f50c925d688b8837219"
     },
     "apps-phortune-dark-large"      : {
       "name" : "apps-phortune-dark-large",
       "rule" : ".apps-phortune-dark-large",
-      "hash" : "32beba64a9dec091e966a7b1dcc9fc96"
+      "hash" : "df430f2b8c6239f21287bab13ffd1716"
     },
     "apps-phortune-light-large"     : {
       "name" : "apps-phortune-light-large",
       "rule" : ".apps-phortune-light-large",
-      "hash" : "c3ec4f73a0f0a23af6f7441cc9328672"
+      "hash" : "8a4d70e7ac92638f81feac0dba56b385"
     },
     "apps-phpast-blue-large"        : {
       "name" : "apps-phpast-blue-large",
       "rule" : ".apps-phpast-blue-large, .phabricator-crumb-view:hover .apps-phpast-dark-large",
-      "hash" : "a9f4f0a62e5841b2ed669dc02694419d"
+      "hash" : "22ba8a058d6b920a909c5f6731f301a0"
     },
     "apps-phpast-dark-large"        : {
       "name" : "apps-phpast-dark-large",
       "rule" : ".apps-phpast-dark-large",
-      "hash" : "1dbc83cc09d722253b634f3308608627"
+      "hash" : "bdbfd96cb50a8b7450daf82576fcfe95"
     },
     "apps-phpast-light-large"       : {
       "name" : "apps-phpast-light-large",
       "rule" : ".apps-phpast-light-large",
-      "hash" : "c63fb0fe3cc326f1a19e4e59c42a73f7"
+      "hash" : "5ebd26eb5e0bc0229db5696020dd9b4a"
     },
     "apps-phrequent-blue-large"     : {
       "name" : "apps-phrequent-blue-large",
       "rule" : ".apps-phrequent-blue-large, .phabricator-crumb-view:hover .apps-phrequent-dark-large",
-      "hash" : "3b7cc5e4ad27cd1bb0fe8c56bad18038"
+      "hash" : "3ad9f5bc306d350d3a2218d3efb2dc9b"
     },
     "apps-phrequent-dark-large"     : {
       "name" : "apps-phrequent-dark-large",
       "rule" : ".apps-phrequent-dark-large",
-      "hash" : "8b68dbbe0be2f647b3114930e474bc47"
+      "hash" : "abd8afa9562e9eacd78b1fb4a446ccc1"
     },
     "apps-phrequent-light-large"    : {
       "name" : "apps-phrequent-light-large",
       "rule" : ".apps-phrequent-light-large",
-      "hash" : "92edbfaf88a78e22401bcaf964f9e7bc"
+      "hash" : "4ef38f490534c986c0c5aeaac5a5cbef"
     },
     "apps-phriction-blue-large"     : {
       "name" : "apps-phriction-blue-large",
       "rule" : ".apps-phriction-blue-large, .phabricator-crumb-view:hover .apps-phriction-dark-large",
-      "hash" : "55bbded073e078117369f42e05b5b5c4"
+      "hash" : "0134e9d694ce72a6d9c554e639a6ed50"
     },
     "apps-phriction-dark-large"     : {
       "name" : "apps-phriction-dark-large",
       "rule" : ".apps-phriction-dark-large",
-      "hash" : "944c3a520a484580895b287eaaa103b1"
+      "hash" : "e4f3121261bc96e00bb6b94b467582f4"
     },
     "apps-phriction-light-large"    : {
       "name" : "apps-phriction-light-large",
       "rule" : ".apps-phriction-light-large",
-      "hash" : "2ca79fdfd141b0fe00ff8b2e13df73bf"
+      "hash" : "a56dcfca00861938d337cc2f217b33f6"
     },
     "apps-ponder-blue-large"        : {
       "name" : "apps-ponder-blue-large",
       "rule" : ".apps-ponder-blue-large, .phabricator-crumb-view:hover .apps-ponder-dark-large",
-      "hash" : "8018fe4ebc1e9af91a8a737e0505aa5d"
+      "hash" : "1bfc2f6150bd67cc25cbe1fbc9283f9c"
     },
     "apps-ponder-dark-large"        : {
       "name" : "apps-ponder-dark-large",
       "rule" : ".apps-ponder-dark-large",
-      "hash" : "1da67495789c69621f91800939ea9684"
+      "hash" : "6efc0b3a74d2cc9eb5de96205613b640"
     },
     "apps-ponder-light-large"       : {
       "name" : "apps-ponder-light-large",
       "rule" : ".apps-ponder-light-large",
-      "hash" : "eb8b13c3bc35f36b14f33ef1158b71ab"
+      "hash" : "595895068b10c68b0e05234570a6a268"
     },
     "apps-power-blue-large"         : {
       "name" : "apps-power-blue-large",
       "rule" : ".apps-power-blue-large, .phabricator-crumb-view:hover .apps-power-dark-large",
-      "hash" : "743499c84546b7b35139eec60bf74c34"
+      "hash" : "c3e03022f162f986f784b2a43c8784c7"
     },
     "apps-power-dark-large"         : {
       "name" : "apps-power-dark-large",
       "rule" : ".apps-power-dark-large",
-      "hash" : "1a3520a2ec255f5b7f1779ea66153ade"
+      "hash" : "52d04564ca2cc7f3a96809e827162f3e"
     },
     "apps-power-light-large"        : {
       "name" : "apps-power-light-large",
       "rule" : ".apps-power-light-large",
-      "hash" : "52d04bd829dfe7477a9dc2ef916990ab"
+      "hash" : "ffe9f181e6103eab9fc688ab84b07ad1"
     },
     "apps-projects-blue-large"      : {
       "name" : "apps-projects-blue-large",
       "rule" : ".apps-projects-blue-large, .phabricator-crumb-view:hover .apps-projects-dark-large",
-      "hash" : "278113829ca3543b9377030555e04edc"
+      "hash" : "494ca64479f68588823e00609496414a"
     },
     "apps-projects-dark-large"      : {
       "name" : "apps-projects-dark-large",
       "rule" : ".apps-projects-dark-large",
-      "hash" : "b6f043db039d4960397f76904a84e9fc"
+      "hash" : "fa85ad644a2e289cb6bea2a67ab534f8"
     },
     "apps-projects-light-large"     : {
       "name" : "apps-projects-light-large",
       "rule" : ".apps-projects-light-large",
-      "hash" : "88c73c7cb50ce7cf9cd8d33ec20c8245"
+      "hash" : "228db63ac0e80b3cef46903a003a44df"
     },
     "apps-releeph-blue-large"       : {
       "name" : "apps-releeph-blue-large",
       "rule" : ".apps-releeph-blue-large, .phabricator-crumb-view:hover .apps-releeph-dark-large",
-      "hash" : "7fc0bbae01435ec3af568e6984bfcbf4"
+      "hash" : "2752feddfe54b159fae06f416dddcc3f"
     },
     "apps-releeph-dark-large"       : {
       "name" : "apps-releeph-dark-large",
       "rule" : ".apps-releeph-dark-large",
-      "hash" : "d82157aafe270ba4c068b5746f264321"
+      "hash" : "6e2f4b03dd37819d09110918ab648ee9"
     },
     "apps-releeph-light-large"      : {
       "name" : "apps-releeph-light-large",
       "rule" : ".apps-releeph-light-large",
-      "hash" : "8c26190fd23f655fce097735afde0c78"
+      "hash" : "e30a4d93df3ca689fef9a9c85db55d98"
     },
     "apps-repositories-blue-large"  : {
       "name" : "apps-repositories-blue-large",
       "rule" : ".apps-repositories-blue-large, .phabricator-crumb-view:hover .apps-repositories-dark-large",
-      "hash" : "0642bf1118210cef9105cc463ec3d36f"
+      "hash" : "a83dd2186f9d92949f19a97f8f777a9c"
     },
     "apps-repositories-dark-large"  : {
       "name" : "apps-repositories-dark-large",
       "rule" : ".apps-repositories-dark-large",
-      "hash" : "c92eb4e857d74f1ef206ba5b184ad88c"
+      "hash" : "30ead88c9f018797a8d5ef2f4e4221fe"
     },
     "apps-repositories-light-large" : {
       "name" : "apps-repositories-light-large",
       "rule" : ".apps-repositories-light-large",
-      "hash" : "446a7eab7b7fc07329bc21a77c438033"
+      "hash" : "bcba180d121f9269787509ba7cdd3e48"
     },
     "apps-settings-blue-large"      : {
       "name" : "apps-settings-blue-large",
       "rule" : ".apps-settings-blue-large, .phabricator-crumb-view:hover .apps-settings-dark-large",
-      "hash" : "4d22a7f016509777bb5b55f39198d9d7"
+      "hash" : "c615df792c7e81b35cfbb78ece39e796"
     },
     "apps-settings-dark-large"      : {
       "name" : "apps-settings-dark-large",
       "rule" : ".apps-settings-dark-large",
-      "hash" : "55e0869a51f70cacdd72f2baad4b28ce"
+      "hash" : "6c174857e23a9d169d0cb4079aa14637"
     },
     "apps-settings-light-large"     : {
       "name" : "apps-settings-light-large",
       "rule" : ".apps-settings-light-large",
-      "hash" : "41da4708f38fae918af46505e566bd6a"
+      "hash" : "e901b672f2a51ef286369bfea70a7e8d"
     },
     "apps-setup-blue-large"         : {
       "name" : "apps-setup-blue-large",
       "rule" : ".apps-setup-blue-large, .phabricator-crumb-view:hover .apps-setup-dark-large",
-      "hash" : "74d2ba681cdad54b31d53f7c174f5826"
+      "hash" : "a2f8f470c3cd928e8c1a6959ff745789"
     },
     "apps-setup-dark-large"         : {
       "name" : "apps-setup-dark-large",
       "rule" : ".apps-setup-dark-large",
-      "hash" : "89a94fe1ce36351d3ea81f1776fb061a"
+      "hash" : "3183fafc1dc05b851ba902ace2dfa34d"
     },
     "apps-setup-light-large"        : {
       "name" : "apps-setup-light-large",
       "rule" : ".apps-setup-light-large",
-      "hash" : "890dd2d7cb1e51992b202dd462d56ba6"
+      "hash" : "419829d244a85f97d67fb45c6febd4e5"
     },
     "apps-slowvote-blue-large"      : {
       "name" : "apps-slowvote-blue-large",
       "rule" : ".apps-slowvote-blue-large, .phabricator-crumb-view:hover .apps-slowvote-dark-large",
-      "hash" : "12299956375e7f382217ebf8c1cb8203"
+      "hash" : "941028e7abbe491e2911fb24c4a8edca"
     },
     "apps-slowvote-dark-large"      : {
       "name" : "apps-slowvote-dark-large",
       "rule" : ".apps-slowvote-dark-large",
-      "hash" : "ce57e4a318e4e8d556f713b459e6d798"
+      "hash" : "6197df3550b652011bc1a8da00005059"
     },
     "apps-slowvote-light-large"     : {
       "name" : "apps-slowvote-light-large",
       "rule" : ".apps-slowvote-light-large",
-      "hash" : "7ac2515f26b194a9fafaa6a27997be2a"
+      "hash" : "23eb39153b5ac9b5bd91c8b800023d93"
     },
     "apps-token-blue-large"         : {
       "name" : "apps-token-blue-large",
       "rule" : ".apps-token-blue-large, .phabricator-crumb-view:hover .apps-token-dark-large",
-      "hash" : "f266781335118f76b4354c25a34f62e2"
+      "hash" : "53b9d88dcedca200b77e4352c5d8658a"
     },
     "apps-token-dark-large"         : {
       "name" : "apps-token-dark-large",
       "rule" : ".apps-token-dark-large",
-      "hash" : "814742a7b1fca3e4b4410c688a5f01d6"
+      "hash" : "a6d44ace0254022fb94b0add80943a54"
     },
     "apps-token-light-large"        : {
       "name" : "apps-token-light-large",
       "rule" : ".apps-token-light-large",
-      "hash" : "5125932cdfb65e5572b539458f238379"
+      "hash" : "2627d02279c7e77485570d7fae3ffbb9"
     },
     "apps-uiexamples-blue-large"    : {
       "name" : "apps-uiexamples-blue-large",
       "rule" : ".apps-uiexamples-blue-large, .phabricator-crumb-view:hover .apps-uiexamples-dark-large",
-      "hash" : "7add7df6b621c4af5322160bc1cd31b2"
+      "hash" : "eabac7f7b83c47618a5f72b6f30b6410"
     },
     "apps-uiexamples-dark-large"    : {
       "name" : "apps-uiexamples-dark-large",
       "rule" : ".apps-uiexamples-dark-large",
-      "hash" : "d8563a5f06692a313a2eff11235d5d0d"
+      "hash" : "31c9fb99289cc73aae73f3acad66b449"
     },
     "apps-uiexamples-light-large"   : {
       "name" : "apps-uiexamples-light-large",
       "rule" : ".apps-uiexamples-light-large",
-      "hash" : "ee40dd0e3168f8e7fb520665a1d50f95"
+      "hash" : "b384102bcee1b312b2e06abc5f4b27de"
     },
     "apps-workphlow-blue-large"     : {
       "name" : "apps-workphlow-blue-large",
       "rule" : ".apps-workphlow-blue-large, .phabricator-crumb-view:hover .apps-workphlow-dark-large",
-      "hash" : "81f0d14881c72463cdb4bbde28f4d56c"
+      "hash" : "695b935d07050bb304057be89d9a803f"
     },
     "apps-workphlow-dark-large"     : {
       "name" : "apps-workphlow-dark-large",
       "rule" : ".apps-workphlow-dark-large",
-      "hash" : "740beaf6bc6a02a3f6c697d7d52582ad"
+      "hash" : "db119fbb31b3288b3eb8aa2cd272c911"
     },
     "apps-workphlow-light-large"    : {
       "name" : "apps-workphlow-light-large",
       "rule" : ".apps-workphlow-light-large",
-      "hash" : "7ebfe02bf53cc8807c93230ee7045da8"
+      "hash" : "b8ac3c3094a9e0dc1bef976323fb1133"
     },
     "apps-xhprof-blue-large"        : {
       "name" : "apps-xhprof-blue-large",
       "rule" : ".apps-xhprof-blue-large, .phabricator-crumb-view:hover .apps-xhprof-dark-large",
-      "hash" : "5c5c6ee841749609141c4b08d8210712"
+      "hash" : "c23dea40c2d0429f5a41463e3bb5ae25"
     },
     "apps-xhprof-dark-large"        : {
       "name" : "apps-xhprof-dark-large",
       "rule" : ".apps-xhprof-dark-large",
-      "hash" : "08776260d29f8b0fd4951dc686d61630"
+      "hash" : "09fed311b163b7b7674d27a7651c92f2"
     },
     "apps-xhprof-light-large"       : {
       "name" : "apps-xhprof-light-large",
       "rule" : ".apps-xhprof-light-large",
-      "hash" : "213abb2c22e9c8794df806341446e284"
+      "hash" : "ae208770bb85b39f843975f01c1ba1df"
     }
   },
   "scales"  : [
     1,
     2
   ],
   "header"  : "\/**\n * @provides sprite-apps-large-css\n * @generated\n *\/\n\n.sprite-apps-large {\n  background-image: url(\/rsrc\/image\/sprite-apps-large.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-apps-large {\n    background-image: url(\/rsrc\/image\/sprite-apps-large-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/apps.json b/resources/sprite/manifest/apps.json
index 81349481c2..d182f6f05b 100644
--- a/resources/sprite/manifest/apps.json
+++ b/resources/sprite/manifest/apps.json
@@ -1,261 +1,261 @@
 {
   "version" : 1,
   "sprites" : {
     "apps-adventure-dark"    : {
       "name" : "apps-adventure-dark",
       "rule" : ".apps-adventure-dark",
-      "hash" : "fb4a520656748f4512ce1bb0c05f8e91"
+      "hash" : "3160378f229d8f7ce9b2382d958b1fa4"
     },
     "apps-application-dark"  : {
       "name" : "apps-application-dark",
       "rule" : ".apps-application-dark",
-      "hash" : "60e228106718bf6f3ee5024400d31f24"
+      "hash" : "89f861c28e97878311885623cff3d314"
     },
     "apps-audit-dark"        : {
       "name" : "apps-audit-dark",
       "rule" : ".apps-audit-dark",
-      "hash" : "38339b9cc4e39cbbbea36dcf039873bb"
+      "hash" : "2c141bc445c4fe62986cd6cff0c29b36"
     },
     "apps-calendar-dark"     : {
       "name" : "apps-calendar-dark",
       "rule" : ".apps-calendar-dark",
-      "hash" : "756d60566639ad1424444436a95c6a3f"
+      "hash" : "04c61a081986f0d38cf27fc4e18bce40"
     },
     "apps-chatlog-dark"      : {
       "name" : "apps-chatlog-dark",
       "rule" : ".apps-chatlog-dark",
-      "hash" : "339c4ddd72761c8cd3b9f9adbe1b0e09"
+      "hash" : "6eca18285fd3937d27887490f3c4da48"
     },
     "apps-conduit-dark"      : {
       "name" : "apps-conduit-dark",
       "rule" : ".apps-conduit-dark",
-      "hash" : "01fba8ca32f1cfefb3516b45c9d28b40"
+      "hash" : "7b410e96c87e7818fb93bdfa2ed9368f"
     },
     "apps-conpherence-dark"  : {
       "name" : "apps-conpherence-dark",
       "rule" : ".apps-conpherence-dark",
-      "hash" : "dbb6fdd5f082a604b4ef10b7eeedbfa2"
+      "hash" : "6d65bc8da41c3a59822b31f68b9b883c"
     },
     "apps-countdown-dark"    : {
       "name" : "apps-countdown-dark",
       "rule" : ".apps-countdown-dark",
-      "hash" : "625f2589ee491aead58aaa5b965a7451"
+      "hash" : "8891502317896beea6a5f9ec87eb5e2e"
     },
     "apps-daemon-dark"       : {
       "name" : "apps-daemon-dark",
       "rule" : ".apps-daemon-dark",
-      "hash" : "4472be3242150f06ea5bf7b45333c4c5"
+      "hash" : "23a9a2927b368e2328dd70f95c5b1a07"
     },
     "apps-differential-dark" : {
       "name" : "apps-differential-dark",
       "rule" : ".apps-differential-dark",
-      "hash" : "508401fe36d9636bdcbdcbcae253c152"
+      "hash" : "bb7032f3c17901f242f9bbbcdc9a721c"
     },
     "apps-diffusion-dark"    : {
       "name" : "apps-diffusion-dark",
       "rule" : ".apps-diffusion-dark",
-      "hash" : "0a6f8c85079c4a325430197adb05967c"
+      "hash" : "46ab6648a6ae04e4fd1a28a9afcc4996"
     },
     "apps-diviner-dark"      : {
       "name" : "apps-diviner-dark",
       "rule" : ".apps-diviner-dark",
-      "hash" : "08872eb1c6bb51b9727290f6fa802633"
+      "hash" : "e21a74e866a6fc22a991b8df6efc3ca7"
     },
     "apps-drydock-dark"      : {
       "name" : "apps-drydock-dark",
       "rule" : ".apps-drydock-dark",
-      "hash" : "d50309da57021c676774f9bdc68c5fe7"
+      "hash" : "ed44013d98257a23306bad9c6b24760d"
     },
     "apps-fact-dark"         : {
       "name" : "apps-fact-dark",
       "rule" : ".apps-fact-dark",
-      "hash" : "0c1be568e1ac05fca814718600190369"
+      "hash" : "f373f38e784289b866ab914471c342ec"
     },
     "apps-feed-dark"         : {
       "name" : "apps-feed-dark",
       "rule" : ".apps-feed-dark",
-      "hash" : "830232709eedbe6ce7cdbcebf182c86c"
+      "hash" : "c4f1765e70615c6ee4cae6e8135fb969"
     },
     "apps-files-dark"        : {
       "name" : "apps-files-dark",
       "rule" : ".apps-files-dark",
-      "hash" : "00f5ab7ea3e9367e378cf9f395400ed4"
+      "hash" : "7faf45efa5b9b97e571bc66636ca1a15"
     },
     "apps-flags-dark"        : {
       "name" : "apps-flags-dark",
       "rule" : ".apps-flags-dark",
-      "hash" : "6382f373f7b0e70522d80ce06ef62813"
+      "hash" : "10298f695592714e27f72ef746ffd8a9"
     },
     "apps-harbormaster-dark" : {
       "name" : "apps-harbormaster-dark",
       "rule" : ".apps-harbormaster-dark",
-      "hash" : "693886513474ea91f904d8adaa0e8e2b"
+      "hash" : "d20c99c40a0aa2ec4ed67c6bdb72b65e"
     },
     "apps-help-dark"         : {
       "name" : "apps-help-dark",
       "rule" : ".apps-help-dark",
-      "hash" : "2299a14e27d76fdf66209ef0042cc84f"
+      "hash" : "5cf715cc566b98c87958793eebea5f35"
     },
     "apps-herald-dark"       : {
       "name" : "apps-herald-dark",
       "rule" : ".apps-herald-dark",
-      "hash" : "b2193b62df3bd4cf5c8de514a07fb6c3"
+      "hash" : "e3bc39a3dd1d66a0abf4594c608a3846"
     },
     "apps-home-dark"         : {
       "name" : "apps-home-dark",
       "rule" : ".apps-home-dark",
-      "hash" : "88f020497fcbcf43729aa817695b174f"
+      "hash" : "7e01fbdfa526919a2d90d2c29a6c9fa0"
     },
     "apps-logo-dark"         : {
       "name" : "apps-logo-dark",
       "rule" : ".apps-logo-dark",
-      "hash" : "02e71ae2421f1949f2ef075c27e052c9"
+      "hash" : "39701e1282fd120e77b09ed9fcddc686"
     },
     "apps-macro-dark"        : {
       "name" : "apps-macro-dark",
       "rule" : ".apps-macro-dark",
-      "hash" : "8e0e72847a8f70eb3f8e60e7fb681c06"
+      "hash" : "ef89457bcee666ad265de1659b9b8a62"
     },
     "apps-mail-dark"         : {
       "name" : "apps-mail-dark",
       "rule" : ".apps-mail-dark",
-      "hash" : "a2a792fddc44be4ae0f1a601380c8449"
+      "hash" : "4d05a5cd4360052183e91f61967a6c57"
     },
     "apps-maniphest-dark"    : {
       "name" : "apps-maniphest-dark",
       "rule" : ".apps-maniphest-dark",
-      "hash" : "ea94fc7dbb2267adc33513f78916fe90"
+      "hash" : "320da127d7f887e09965a0416d5e44d3"
     },
     "apps-metamta-dark"      : {
       "name" : "apps-metamta-dark",
       "rule" : ".apps-metamta-dark",
-      "hash" : "8abbb6e74d1697f950a01dcd6c8077be"
+      "hash" : "51f100c2a7a80149404dbc8b27f595a9"
     },
     "apps-owners-dark"       : {
       "name" : "apps-owners-dark",
       "rule" : ".apps-owners-dark",
-      "hash" : "23b948cc1d32a0968785fbfca749dcdf"
+      "hash" : "33c064dd3b7fc3f9eb934d0cf84f3af5"
     },
     "apps-paste-dark"        : {
       "name" : "apps-paste-dark",
       "rule" : ".apps-paste-dark",
-      "hash" : "9e0c1d1fe03aebcb55a4d19be051e255"
+      "hash" : "9482649caa8e5a46d277271092517b12"
     },
     "apps-people-dark"       : {
       "name" : "apps-people-dark",
       "rule" : ".apps-people-dark",
-      "hash" : "0b3995fcd043b506a408de6e25ad5292"
+      "hash" : "67245eafa79367e4e07289549cf34deb"
     },
     "apps-phage-dark"        : {
       "name" : "apps-phage-dark",
       "rule" : ".apps-phage-dark",
-      "hash" : "9d939bbe908a1bd96e1b22f8fa007aa5"
+      "hash" : "1d57e130946a69f5e973a0f081f3af73"
     },
     "apps-phame-dark"        : {
       "name" : "apps-phame-dark",
       "rule" : ".apps-phame-dark",
-      "hash" : "24ff4d322bce13f1c156ce5361a03a07"
+      "hash" : "029d7d48523cc43b0404bf40ccf56f8b"
     },
     "apps-phid-dark"         : {
       "name" : "apps-phid-dark",
       "rule" : ".apps-phid-dark",
-      "hash" : "5a0ac05bbf36a7aeb36753d093c3c9f8"
+      "hash" : "2099c2987fe3929ce1d9dec470c7699d"
     },
     "apps-phlux-dark"        : {
       "name" : "apps-phlux-dark",
       "rule" : ".apps-phlux-dark",
-      "hash" : "ee8d71e2a68b9a9704ccdc4276199d79"
+      "hash" : "d498e934af378493b7d7299d81506c51"
     },
     "apps-pholio-dark"       : {
       "name" : "apps-pholio-dark",
       "rule" : ".apps-pholio-dark",
-      "hash" : "7d3befd1c12dd464a5f5edbef4574a5c"
+      "hash" : "aab47c79d2e03fdcaffb6f41dc1e0f06"
     },
     "apps-phortune-dark"     : {
       "name" : "apps-phortune-dark",
       "rule" : ".apps-phortune-dark",
-      "hash" : "cdc79c02273af8491c1d6b9fed029a55"
+      "hash" : "4fd669697e92baeb9dcf64b2e0c834af"
     },
     "apps-phpast-dark"       : {
       "name" : "apps-phpast-dark",
       "rule" : ".apps-phpast-dark",
-      "hash" : "de1ad812c7a177c844fcff626b1abebf"
+      "hash" : "e6db72b398f57d03a400c9c18bd3c412"
     },
     "apps-phrequent-dark"    : {
       "name" : "apps-phrequent-dark",
       "rule" : ".apps-phrequent-dark",
-      "hash" : "60888f4879e557a0182a84785aabad16"
+      "hash" : "c13b5d277e5c42aeb72091f09b164366"
     },
     "apps-phriction-dark"    : {
       "name" : "apps-phriction-dark",
       "rule" : ".apps-phriction-dark",
-      "hash" : "8596da3f375087db6a163c98f0c968ae"
+      "hash" : "8064272206874a324d20d956c8fb10da"
     },
     "apps-ponder-dark"       : {
       "name" : "apps-ponder-dark",
       "rule" : ".apps-ponder-dark",
-      "hash" : "232577eb875f383f45cb9dbd9a4e3976"
+      "hash" : "abdb353635bed5cfd48a176b4340022f"
     },
     "apps-power-dark"        : {
       "name" : "apps-power-dark",
       "rule" : ".apps-power-dark",
-      "hash" : "e3708b1b4bfdfc614d9cf630943e5bef"
+      "hash" : "d3e943d1267206963d8f9419629c5581"
     },
     "apps-projects-dark"     : {
       "name" : "apps-projects-dark",
       "rule" : ".apps-projects-dark",
-      "hash" : "5e799f1e95ecfd33cb67b6e4ac992043"
+      "hash" : "6bd7c598e2f2cf0b77918a7b0fa8bd19"
     },
     "apps-releeph-dark"      : {
       "name" : "apps-releeph-dark",
       "rule" : ".apps-releeph-dark",
-      "hash" : "2ac942c35efb43646df853feb13c9b55"
+      "hash" : "c54f40e09413c3b76461d47ae9c86e03"
     },
     "apps-repositories-dark" : {
       "name" : "apps-repositories-dark",
       "rule" : ".apps-repositories-dark",
-      "hash" : "736066962e96df88eacc04d734613a0e"
+      "hash" : "db2823a16dae198145f53e8021170740"
     },
     "apps-settings-dark"     : {
       "name" : "apps-settings-dark",
       "rule" : ".apps-settings-dark",
-      "hash" : "2fadcf918fb084bd3452712f700ae1a0"
+      "hash" : "1c84d22b769730d9e8b6fcd3414de72c"
     },
     "apps-setup-dark"        : {
       "name" : "apps-setup-dark",
       "rule" : ".apps-setup-dark",
-      "hash" : "061b80f3555ade1c36934474b61fe76b"
+      "hash" : "27db76695d99be0c25368dc9e0932b17"
     },
     "apps-slowvote-dark"     : {
       "name" : "apps-slowvote-dark",
       "rule" : ".apps-slowvote-dark",
-      "hash" : "e51cc1e6887f2deaff02d9c60aae36e0"
+      "hash" : "0d5861fab4562ad21242e34f9a29a33e"
     },
     "apps-token-dark"        : {
       "name" : "apps-token-dark",
       "rule" : ".apps-token-dark",
-      "hash" : "960f497d9417746e2818b8fec0c1bf8b"
+      "hash" : "7932d74ca1f0be4a07422d60c5df1edf"
     },
     "apps-uiexamples-dark"   : {
       "name" : "apps-uiexamples-dark",
       "rule" : ".apps-uiexamples-dark",
-      "hash" : "dd919fd2c10e7d1e0915f523ac3922ce"
+      "hash" : "6416a3d9d9007673ee558433b80692a1"
     },
     "apps-workphlow-dark"    : {
       "name" : "apps-workphlow-dark",
       "rule" : ".apps-workphlow-dark",
-      "hash" : "4b06ffd8686513187b70d0eac1a4d62d"
+      "hash" : "bc03aa43ea5609c8a5d9efa42d8b88a9"
     },
     "apps-xhprof-dark"       : {
       "name" : "apps-xhprof-dark",
       "rule" : ".apps-xhprof-dark",
-      "hash" : "8333803b5ac7760726ad72ad098b82e7"
+      "hash" : "a6d7a3b979e343e8893fce7ea35059cd"
     }
   },
   "scales"  : [
     1,
     2
   ],
   "header"  : "\/**\n * @provides sprite-apps-css\n * @generated\n *\/\n\n.sprite-apps {\n  background-image: url(\/rsrc\/image\/sprite-apps.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-apps {\n    background-image: url(\/rsrc\/image\/sprite-apps-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/conpherence.json b/resources/sprite/manifest/conpherence.json
index 0e66f3ad9f..6e545d126b 100644
--- a/resources/sprite/manifest/conpherence.json
+++ b/resources/sprite/manifest/conpherence.json
@@ -1,81 +1,81 @@
 {
   "version" : 1,
   "sprites" : {
     "conpherence_calendar_off"     : {
       "name" : "conpherence_calendar_off",
       "rule" : ".conpherence_calendar_off",
-      "hash" : "decc3702e604e099efe24f529183c0fc"
+      "hash" : "4d03aee7c611b72870ae39118b2ffb21"
     },
     "conpherence_calendar_on"      : {
       "name" : "conpherence_calendar_on",
       "rule" : ".conpherence_calendar_on, .device-desktop .conpherence_calendar_off:hover ",
-      "hash" : "d7571a591c10404ebf3ad000e79968a6"
+      "hash" : "efa498604c106f19b825c8a1ed63edad"
     },
     "conpherence_conversation_off" : {
       "name" : "conpherence_conversation_off",
       "rule" : ".conpherence_conversation_off",
-      "hash" : "e450f91bc50b22aeff4ae334473572e6"
+      "hash" : "fd4039f04f57452ee2bf8e0ac1fcacab"
     },
     "conpherence_conversation_on"  : {
       "name" : "conpherence_conversation_on",
       "rule" : ".conpherence_conversation_on, .device-desktop .conpherence_conversation_off:hover ",
-      "hash" : "f029f8111c889cff58d96e4f1feec3fd"
+      "hash" : "f3f526793bfb7bfe2db39a7fdfc9605b"
     },
     "conpherence_files_off"        : {
       "name" : "conpherence_files_off",
       "rule" : ".conpherence_files_off",
-      "hash" : "f2bd871c63e037ee1046cc12195602ae"
+      "hash" : "39241fd1b72cfe6d60836c6a4975f45d"
     },
     "conpherence_files_on"         : {
       "name" : "conpherence_files_on",
       "rule" : ".conpherence_files_on, .device-desktop .conpherence_files_off:hover ",
-      "hash" : "5ec4c24167037ee0a667a5d0ddfc163e"
+      "hash" : "9bb8747b1b754d9bd9cef6eac4115847"
     },
     "conpherence_list_off"         : {
       "name" : "conpherence_list_off",
       "rule" : ".conpherence_list_off",
-      "hash" : "739a2b503e7925a5efab6bcf3958bf40"
+      "hash" : "f56a971f145fe96f70fa930cdd734085"
     },
     "conpherence_list_on"          : {
       "name" : "conpherence_list_on",
       "rule" : ".conpherence_list_on, .device-desktop .conpherence_list_off:hover ",
-      "hash" : "8c7ab79a7e72de264d8243b64bacdb9d"
+      "hash" : "1be2136af5b5f4b158184332e7498837"
     },
     "conpherence_more_off"         : {
       "name" : "conpherence_more_off",
       "rule" : ".conpherence_more_off",
-      "hash" : "bd5ba7ccd7c6ef1cab2a18020cc00568"
+      "hash" : "633469f84525082326ea72d2809cccaf"
     },
     "conpherence_more_on"          : {
       "name" : "conpherence_more_on",
       "rule" : ".conpherence_more_on, .device-desktop .conpherence_more_off:hover ",
-      "hash" : "04a0473e5eee0027ea775a54b4115314"
+      "hash" : "a2812e313a5c5f0aba1ccee25d40113d"
     },
     "conpherence_people_off"       : {
       "name" : "conpherence_people_off",
       "rule" : ".conpherence_people_off",
-      "hash" : "ef388570fd564985ffcaec4c2ab0a6a3"
+      "hash" : "85e20d9b6111b61fe960d023bd6b00ec"
     },
     "conpherence_people_on"        : {
       "name" : "conpherence_people_on",
       "rule" : ".conpherence_people_on, .device-desktop .conpherence_people_off:hover ",
-      "hash" : "e7a1036c83ac021f6d6edf4a5589c06c"
+      "hash" : "fca0c890b0594fdbe5ad19b2183bd275"
     },
     "conpherence_settings_off"     : {
       "name" : "conpherence_settings_off",
       "rule" : ".conpherence_settings_off",
-      "hash" : "4bef04add57bcd359aa031e33787de46"
+      "hash" : "645a36b516cb95c2ec26dbabde9fc117"
     },
     "conpherence_settings_on"      : {
       "name" : "conpherence_settings_on",
       "rule" : ".conpherence_settings_on, .device-desktop .conpherence_settings_off:hover ",
-      "hash" : "6a6d5dcf4ddfc11986329a2b4d5e94cb"
+      "hash" : "6d923258ea79e9b29e9fa5b8c971311a"
     }
   },
   "scales"  : [
     1,
     2
   ],
   "header"  : "\/**\n * @provides sprite-conpherence-css\n * @generated\n *\/\n\n.sprite-conpherence {\n  background-image: url(\/rsrc\/image\/sprite-conpherence.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-conpherence {\n    background-image: url(\/rsrc\/image\/sprite-conpherence-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/docs.json b/resources/sprite/manifest/docs.json
index 1239c458fc..a0635fd69e 100644
--- a/resources/sprite/manifest/docs.json
+++ b/resources/sprite/manifest/docs.json
@@ -1,51 +1,51 @@
 {
   "version" : 1,
   "sprites" : {
     "docs_audio" : {
       "name" : "docs_audio",
       "rule" : ".docs_audio",
-      "hash" : "d3fccd15fc53b04b6caf22a3bb5f4634"
+      "hash" : "c21807a617c7185927a1469414d94162"
     },
     "docs_doc"   : {
       "name" : "docs_doc",
       "rule" : ".docs_doc",
-      "hash" : "31496e2953350c276a6b8619b071f299"
+      "hash" : "a8101edeb05359642272ae3f5cff3459"
     },
     "docs_file"  : {
       "name" : "docs_file",
       "rule" : ".docs_file",
-      "hash" : "3d88ce46362e723cf76bf552550c82a6"
+      "hash" : "67eaa901da768ad2e6e4e56f6d85b1eb"
     },
     "docs_image" : {
       "name" : "docs_image",
       "rule" : ".docs_image",
-      "hash" : "8eaa89c50f3be46c87706d649bd304af"
+      "hash" : "c13a007374062851f39affa852b0017f"
     },
     "docs_movie" : {
       "name" : "docs_movie",
       "rule" : ".docs_movie",
-      "hash" : "859f7df4027e145290607d78d9500b45"
+      "hash" : "85161a854bcd425bfb51c083ddd3015a"
     },
     "docs_pdf"   : {
       "name" : "docs_pdf",
       "rule" : ".docs_pdf",
-      "hash" : "c423839d6b35baf59e79c0cd8d3e580f"
+      "hash" : "9ab4fa1f86b0b5f512e6c3bba05f392a"
     },
     "docs_place" : {
       "name" : "docs_place",
       "rule" : ".docs_place",
-      "hash" : "8ee9e4dad7df830c487227083e0091f5"
+      "hash" : "da49737d9320594908833850e6e35269"
     },
     "docs_zip"   : {
       "name" : "docs_zip",
       "rule" : ".docs_zip",
-      "hash" : "91d6be2027be6a7791477ac12cd94b6d"
+      "hash" : "c7e5ede0d02b78119761804aadc4590f"
     }
   },
   "scales"  : [
     1,
     2
   ],
   "header"  : "\/**\n * @provides sprite-docs-css\n * @generated\n *\/\n\n.sprite-docs {\n  background-image: url(\/rsrc\/image\/sprite-docs.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-docs {\n    background-image: url(\/rsrc\/image\/sprite-docs-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/gradient.json b/resources/sprite/manifest/gradient.json
index 18bcf4ca93..397681e981 100644
--- a/resources/sprite/manifest/gradient.json
+++ b/resources/sprite/manifest/gradient.json
@@ -1,65 +1,65 @@
 {
   "version" : 1,
   "sprites" : {
     "gradient-blue-header"      : {
       "name" : "gradient-blue-header",
       "rule" : ".gradient-blue-header",
-      "hash" : "dd82b6d737f9f683c0d6e70eff59e872"
+      "hash" : "140afa213190597e9b55b2eafdd73595"
     },
     "gradient-breadcrumbs"      : {
       "name" : "gradient-breadcrumbs",
       "rule" : ".gradient-breadcrumbs",
-      "hash" : "3d0f8634df5bc29eaf2a5a01bae79cf1"
+      "hash" : "688ab77f50cfbc17ec30d798efb1b39e"
     },
     "gradient-dark-grey-header" : {
       "name" : "gradient-dark-grey-header",
       "rule" : ".gradient-dark-grey-header",
-      "hash" : "2bdb9bec730405a8fc0a1eca4f3538c2"
+      "hash" : "8367f2aa63fc9e87113f1399236646b3"
     },
     "gradient-dark-menu-label"  : {
       "name" : "gradient-dark-menu-label",
       "rule" : ".gradient-dark-menu-label, .phabricator-dark-menu .phabricator-menu-item-type-label",
-      "hash" : "e0d4a455142f9c4745d36ad8b7dd3f78"
+      "hash" : "89a908596142d38fbe61a706694cd321"
     },
     "gradient-green-header"     : {
       "name" : "gradient-green-header",
       "rule" : ".gradient-green-header",
-      "hash" : "d61297d23aa31fa1de51e2b9b5974554"
+      "hash" : "e98f182fcb60ef2f069b50c1cc86bfcd"
     },
     "gradient-grey-header"      : {
       "name" : "gradient-grey-header",
       "rule" : ".gradient-grey-header",
-      "hash" : "f1453896068a8dd0d7885457c8e371bc"
+      "hash" : "35fb239cd341b3eb2eea7a73b69782f9"
     },
     "gradient-menu-hover"       : {
       "name" : "gradient-menu-hover",
       "rule" : ".gradient-menu-hover, .device-desktop .phabricator-side-menu a.phabricator-menu-item-type-link:hover, .phabricator-filetree a.phabricator-filetree-item:hover",
-      "hash" : "e6e064156d66952180e99b00996ffc38"
+      "hash" : "856380207ac8c5cb6770d44dceb245a8"
     },
     "gradient-menu-label"       : {
       "name" : "gradient-menu-label",
       "rule" : ".gradient-menu-label, .phabricator-side-menu .phabricator-menu-item-type-label",
-      "hash" : "04b9943f5b06c8cb21fe6b96714e6662"
+      "hash" : "8ad8352b077ae02820ebbbae26dc669b"
     },
     "gradient-menu-selected"    : {
       "name" : "gradient-menu-selected",
       "rule" : ".gradient-menu-selected, .phabricator-side-menu .phabricator-menu-item-selected, .device-desktop .phabricator-side-menu a.phabricator-menu-item-selected:hover, .phabricator-nav-local a.phabricator-active-nav-focus",
-      "hash" : "9b4b039fba177b90bc26f0e6eece339d"
+      "hash" : "815bafb94e11c23e1a419ea85dcae113"
     },
     "gradient-red-header"       : {
       "name" : "gradient-red-header",
       "rule" : ".gradient-red-header",
-      "hash" : "27a76645065953a8440d0c3d2b192c82"
+      "hash" : "74d5dacd92eb2aaf4b0b79ccf814849b"
     },
     "gradient-yellow-header"    : {
       "name" : "gradient-yellow-header",
       "rule" : ".gradient-yellow-header",
-      "hash" : "181e68e61f29071c3ec3810694c2ef08"
+      "hash" : "6ee02b257d2c9b0e0fbc5bdaa2d0ef75"
     }
   },
   "scales"  : [
     1
   ],
   "header"  : "\/**\n * @provides sprite-gradient-css\n * @generated\n *\/\n\n.sprite-gradient, .phabricator-dark-menu .phabricator-menu-item-type-label, .phabricator-side-menu .phabricator-menu-item-type-label, .device-desktop .phabricator-side-menu a.phabricator-menu-item-type-link:hover, .phabricator-side-menu .phabricator-menu-item-selected, .device-desktop .phabricator-side-menu a.phabricator-menu-item-selected:hover, .phabricator-filetree a.phabricator-filetree-item:hover, .phabricator-filetree a.phabricator-active-nav-focus {\n  background-image: url(\/rsrc\/image\/sprite-gradient.png);\n  background-repeat: repeat-x;\n}\n\n\n",
   "type"    : "repeat-x"
 }
diff --git a/resources/sprite/manifest/icon.json b/resources/sprite/manifest/icon.json
deleted file mode 100644
index e348b497a0..0000000000
--- a/resources/sprite/manifest/icon.json
+++ /dev/null
@@ -1,1051 +0,0 @@
-{
-  "version" : 1,
-  "sprites" : {
-    "action-action-menu"             : {
-      "name" : "action-action-menu",
-      "rule" : ".action-action-menu",
-      "hash" : "533fe3e36cfbf890ad7348330a2328a9"
-    },
-    "action-action-menu-grey"        : {
-      "name" : "action-action-menu-grey",
-      "rule" : ".action-action-menu-grey",
-      "hash" : "9bc229a81b33bb62bcb4e025283ffbe5"
-    },
-    "action-action-menu-white"       : {
-      "name" : "action-action-menu-white",
-      "rule" : ".action-action-menu-white, .device-desktop .phabricator-action-view:hover .action-action-menu",
-      "hash" : "db0ff28b9ee23cdbf6125a7864b693b0"
-    },
-    "action-arrow_left"              : {
-      "name" : "action-arrow_left",
-      "rule" : ".action-arrow_left",
-      "hash" : "18a72fcb866d409a6273883cc56b4862"
-    },
-    "action-arrow_left-grey"         : {
-      "name" : "action-arrow_left-grey",
-      "rule" : ".action-arrow_left-grey",
-      "hash" : "200067f0f3af28260f95632eb17c373a"
-    },
-    "action-arrow_left-white"        : {
-      "name" : "action-arrow_left-white",
-      "rule" : ".action-arrow_left-white, .device-desktop .phabricator-action-view:hover .action-arrow_left",
-      "hash" : "f21ee5fc3b0ad93d1ca18c71e6a62623"
-    },
-    "action-arrow_right"             : {
-      "name" : "action-arrow_right",
-      "rule" : ".action-arrow_right",
-      "hash" : "64fb031691e8711ec2922644831a4b05"
-    },
-    "action-arrow_right-grey"        : {
-      "name" : "action-arrow_right-grey",
-      "rule" : ".action-arrow_right-grey",
-      "hash" : "7d3a0c9e65b9917ccc5acf3ec1ccad2e"
-    },
-    "action-arrow_right-white"       : {
-      "name" : "action-arrow_right-white",
-      "rule" : ".action-arrow_right-white, .device-desktop .phabricator-action-view:hover .action-arrow_right",
-      "hash" : "b16e8688f68d9f225aae11fa2de98f41"
-    },
-    "action-attach"                  : {
-      "name" : "action-attach",
-      "rule" : ".action-attach",
-      "hash" : "4aeca7c85a2c384c25c0a5d27aa2a41f"
-    },
-    "action-attach-grey"             : {
-      "name" : "action-attach-grey",
-      "rule" : ".action-attach-grey",
-      "hash" : "6d528ecda66e9919452cbca77f94d034"
-    },
-    "action-attach-white"            : {
-      "name" : "action-attach-white",
-      "rule" : ".action-attach-white, .device-desktop .phabricator-action-view:hover .action-attach",
-      "hash" : "75b0dcbb6f6f297b647266165bd0ac77"
-    },
-    "action-blame"                   : {
-      "name" : "action-blame",
-      "rule" : ".action-blame",
-      "hash" : "467a17a711c501b51318b2661d38458c"
-    },
-    "action-blame-grey"              : {
-      "name" : "action-blame-grey",
-      "rule" : ".action-blame-grey",
-      "hash" : "b5def77f42ef0fc2eb8141f54a6c730b"
-    },
-    "action-blame-white"             : {
-      "name" : "action-blame-white",
-      "rule" : ".action-blame-white, .device-desktop .phabricator-action-view:hover .action-blame",
-      "hash" : "ef8bcbb695d0af2ef18c7be1fe308641"
-    },
-    "action-check"                   : {
-      "name" : "action-check",
-      "rule" : ".action-check",
-      "hash" : "0db35013c33b71355dc33912073d0c28"
-    },
-    "action-check-grey"              : {
-      "name" : "action-check-grey",
-      "rule" : ".action-check-grey",
-      "hash" : "381b82f1a08592cf1c3f23b3d12c0456"
-    },
-    "action-check-white"             : {
-      "name" : "action-check-white",
-      "rule" : ".action-check-white, .device-desktop .phabricator-action-view:hover .action-check",
-      "hash" : "be412e3b2d3574bb04721b2f8646b67e"
-    },
-    "action-comment"                 : {
-      "name" : "action-comment",
-      "rule" : ".action-comment",
-      "hash" : "5cbd81c2469dc95048abf073d977f7e2"
-    },
-    "action-comment-grey"            : {
-      "name" : "action-comment-grey",
-      "rule" : ".action-comment-grey",
-      "hash" : "be352ed442c144230f65c0a4c4d56a64"
-    },
-    "action-comment-white"           : {
-      "name" : "action-comment-white",
-      "rule" : ".action-comment-white, .device-desktop .phabricator-action-view:hover .action-comment",
-      "hash" : "5f428fb791a23e4a8e2c15f66ff23485"
-    },
-    "action-computer"                : {
-      "name" : "action-computer",
-      "rule" : ".action-computer",
-      "hash" : "ab8e3d101f3f1a8b434d449ef1b9abd3"
-    },
-    "action-computer-grey"           : {
-      "name" : "action-computer-grey",
-      "rule" : ".action-computer-grey",
-      "hash" : "6ad695eb4df2f2db3268513307439280"
-    },
-    "action-computer-white"          : {
-      "name" : "action-computer-white",
-      "rule" : ".action-computer-white, .device-desktop .phabricator-action-view:hover .action-computer",
-      "hash" : "773aaa54b567fb9de636e3d4be417b3a"
-    },
-    "action-create"                  : {
-      "name" : "action-create",
-      "rule" : ".action-create",
-      "hash" : "b6f1daca7830bd72f390e7d64630c366"
-    },
-    "action-create-grey"             : {
-      "name" : "action-create-grey",
-      "rule" : ".action-create-grey",
-      "hash" : "fa830394fbf05528cd3c655ab0481d0a"
-    },
-    "action-create-white"            : {
-      "name" : "action-create-white",
-      "rule" : ".action-create-white, .device-desktop .phabricator-action-view:hover .action-create",
-      "hash" : "addfa0ab79944ca318ffc57e568bae9c"
-    },
-    "action-delete"                  : {
-      "name" : "action-delete",
-      "rule" : ".action-delete",
-      "hash" : "174c6a08a8a7131cef810e006b5a71e0"
-    },
-    "action-delete-grey"             : {
-      "name" : "action-delete-grey",
-      "rule" : ".action-delete-grey",
-      "hash" : "e541601ce768fb2fa1a941a95ac3a7cf"
-    },
-    "action-delete-white"            : {
-      "name" : "action-delete-white",
-      "rule" : ".action-delete-white, .device-desktop .phabricator-action-view:hover .action-delete",
-      "hash" : "496e780e0470bce85116baaa3aebdab2"
-    },
-    "action-disable"                 : {
-      "name" : "action-disable",
-      "rule" : ".action-disable",
-      "hash" : "0a0b314012bdaaa307ac70d2581c20b5"
-    },
-    "action-disable-grey"            : {
-      "name" : "action-disable-grey",
-      "rule" : ".action-disable-grey",
-      "hash" : "c7741a4579c4e7a1c94dfd029b3e3bb0"
-    },
-    "action-disable-white"           : {
-      "name" : "action-disable-white",
-      "rule" : ".action-disable-white, .device-desktop .phabricator-action-view:hover .action-disable",
-      "hash" : "3f456c6f15d4aaccfe85ae73e856ca1c"
-    },
-    "action-dislike"                 : {
-      "name" : "action-dislike",
-      "rule" : ".action-dislike",
-      "hash" : "846820ffc823a4899dde8f8c14203df1"
-    },
-    "action-dislike-grey"            : {
-      "name" : "action-dislike-grey",
-      "rule" : ".action-dislike-grey",
-      "hash" : "1e994ac16acba86dae2f9e94ff0df2c2"
-    },
-    "action-dislike-white"           : {
-      "name" : "action-dislike-white",
-      "rule" : ".action-dislike-white, .device-desktop .phabricator-action-view:hover .action-dislike",
-      "hash" : "55d374c8466370c8c5805b8135c3f416"
-    },
-    "action-download"                : {
-      "name" : "action-download",
-      "rule" : ".action-download",
-      "hash" : "b4517953cb610ad5af5537ac5526a168"
-    },
-    "action-download-alt"            : {
-      "name" : "action-download-alt",
-      "rule" : ".action-download-alt",
-      "hash" : "7ea7b578f8da62d7aaf82b1e80f0fa96"
-    },
-    "action-download-alt-grey"       : {
-      "name" : "action-download-alt-grey",
-      "rule" : ".action-download-alt-grey",
-      "hash" : "6b06b8e24433f7b4690a0bda53441399"
-    },
-    "action-download-alt-white"      : {
-      "name" : "action-download-alt-white",
-      "rule" : ".action-download-alt-white, .device-desktop .phabricator-action-view:hover .action-download-alt",
-      "hash" : "f458b2b153b9fd655bdea9c2c73ed569"
-    },
-    "action-download-grey"           : {
-      "name" : "action-download-grey",
-      "rule" : ".action-download-grey",
-      "hash" : "d2502bf6e4c56e8c24f564285a3d0f4e"
-    },
-    "action-download-white"          : {
-      "name" : "action-download-white",
-      "rule" : ".action-download-white, .device-desktop .phabricator-action-view:hover .action-download",
-      "hash" : "90ca79835936319d143ea5c3b745744e"
-    },
-    "action-edit"                    : {
-      "name" : "action-edit",
-      "rule" : ".action-edit",
-      "hash" : "539f11d58239683c73b275335e1cd5ee"
-    },
-    "action-edit-grey"               : {
-      "name" : "action-edit-grey",
-      "rule" : ".action-edit-grey",
-      "hash" : "9ac07dfbc52997775aeaa4fafbf43d12"
-    },
-    "action-edit-white"              : {
-      "name" : "action-edit-white",
-      "rule" : ".action-edit-white, .device-desktop .phabricator-action-view:hover .action-edit",
-      "hash" : "cb83ff8b6f93bf367233960142abf744"
-    },
-    "action-enable"                  : {
-      "name" : "action-enable",
-      "rule" : ".action-enable",
-      "hash" : "a0d81348f61019149090e89d2d126a8f"
-    },
-    "action-enable-grey"             : {
-      "name" : "action-enable-grey",
-      "rule" : ".action-enable-grey",
-      "hash" : "8d6bf1d0333b81cde5cbeb8646316863"
-    },
-    "action-enable-white"            : {
-      "name" : "action-enable-white",
-      "rule" : ".action-enable-white, .device-desktop .phabricator-action-view:hover .action-enable",
-      "hash" : "6cbadeb75ede97f58a62b0bafbc7aef5"
-    },
-    "action-file"                    : {
-      "name" : "action-file",
-      "rule" : ".action-file",
-      "hash" : "95de3ed156d8e8008a464fee994a8b7a"
-    },
-    "action-file-grey"               : {
-      "name" : "action-file-grey",
-      "rule" : ".action-file-grey",
-      "hash" : "bd1b94b5ef4ea93570b5dd11f9b6fc2f"
-    },
-    "action-file-white"              : {
-      "name" : "action-file-white",
-      "rule" : ".action-file-white, .device-desktop .phabricator-action-view:hover .action-file",
-      "hash" : "330b3ff7217edaa7b348c1209eeb5301"
-    },
-    "action-flag"                    : {
-      "name" : "action-flag",
-      "rule" : ".action-flag",
-      "hash" : "017bbfc781bfa2613ade68fd791d7b66"
-    },
-    "action-flag-0"                  : {
-      "name" : "action-flag-0",
-      "rule" : ".action-flag-0",
-      "hash" : "63ae0ab21e802d2cf11c40cb239718a6"
-    },
-    "action-flag-0-grey"             : {
-      "name" : "action-flag-0-grey",
-      "rule" : ".action-flag-0-grey",
-      "hash" : "6a9bb10f146c2adbd5ffc8111ce959c8"
-    },
-    "action-flag-0-white"            : {
-      "name" : "action-flag-0-white",
-      "rule" : ".action-flag-0-white, .device-desktop .phabricator-action-view:hover .action-flag-0",
-      "hash" : "f40d6750653f54ce6099c76294ab5b80"
-    },
-    "action-flag-1"                  : {
-      "name" : "action-flag-1",
-      "rule" : ".action-flag-1",
-      "hash" : "7f50971290dff274a11930faeeac076b"
-    },
-    "action-flag-1-grey"             : {
-      "name" : "action-flag-1-grey",
-      "rule" : ".action-flag-1-grey",
-      "hash" : "eb6af245f22f94b81368ac24a5021cb0"
-    },
-    "action-flag-1-white"            : {
-      "name" : "action-flag-1-white",
-      "rule" : ".action-flag-1-white, .device-desktop .phabricator-action-view:hover .action-flag-1",
-      "hash" : "c47bfa96d98672bfe5afa85a0cfbec89"
-    },
-    "action-flag-2"                  : {
-      "name" : "action-flag-2",
-      "rule" : ".action-flag-2",
-      "hash" : "63a979a0d2de57efdcf5fee2192957e1"
-    },
-    "action-flag-2-grey"             : {
-      "name" : "action-flag-2-grey",
-      "rule" : ".action-flag-2-grey",
-      "hash" : "46d028b2ddbc26251b5fcc02ec87ca43"
-    },
-    "action-flag-2-white"            : {
-      "name" : "action-flag-2-white",
-      "rule" : ".action-flag-2-white, .device-desktop .phabricator-action-view:hover .action-flag-2",
-      "hash" : "45b1dda7b8c85546d40789ca83ed481c"
-    },
-    "action-flag-3"                  : {
-      "name" : "action-flag-3",
-      "rule" : ".action-flag-3",
-      "hash" : "d95b847797e6ad0ae4e5719085530709"
-    },
-    "action-flag-3-grey"             : {
-      "name" : "action-flag-3-grey",
-      "rule" : ".action-flag-3-grey",
-      "hash" : "fab7eca7e7a1e75a68a2f86a9ecb4dfd"
-    },
-    "action-flag-3-white"            : {
-      "name" : "action-flag-3-white",
-      "rule" : ".action-flag-3-white, .device-desktop .phabricator-action-view:hover .action-flag-3",
-      "hash" : "42f994d618726c1294ac7206accdac0d"
-    },
-    "action-flag-4"                  : {
-      "name" : "action-flag-4",
-      "rule" : ".action-flag-4",
-      "hash" : "61d60e39d879436ffaa4bf3489c4be62"
-    },
-    "action-flag-4-grey"             : {
-      "name" : "action-flag-4-grey",
-      "rule" : ".action-flag-4-grey",
-      "hash" : "8dc44ff4d36f6e1e4522fc865923a4df"
-    },
-    "action-flag-4-white"            : {
-      "name" : "action-flag-4-white",
-      "rule" : ".action-flag-4-white, .device-desktop .phabricator-action-view:hover .action-flag-4",
-      "hash" : "e948ac8da0548c252ce32f4ff2503790"
-    },
-    "action-flag-5"                  : {
-      "name" : "action-flag-5",
-      "rule" : ".action-flag-5",
-      "hash" : "597c19fdaa99572b5d65d30d3cb81c13"
-    },
-    "action-flag-5-grey"             : {
-      "name" : "action-flag-5-grey",
-      "rule" : ".action-flag-5-grey",
-      "hash" : "24bf02b161815f07e9bcd9e75ba141f6"
-    },
-    "action-flag-5-white"            : {
-      "name" : "action-flag-5-white",
-      "rule" : ".action-flag-5-white, .device-desktop .phabricator-action-view:hover .action-flag-5",
-      "hash" : "55bcef156bbd099ada0c39aa796be663"
-    },
-    "action-flag-6"                  : {
-      "name" : "action-flag-6",
-      "rule" : ".action-flag-6",
-      "hash" : "490fea784ff63de9edffb1d142db49e0"
-    },
-    "action-flag-6-grey"             : {
-      "name" : "action-flag-6-grey",
-      "rule" : ".action-flag-6-grey",
-      "hash" : "5b3c14db2a182eb31f1925829adac556"
-    },
-    "action-flag-6-white"            : {
-      "name" : "action-flag-6-white",
-      "rule" : ".action-flag-6-white, .device-desktop .phabricator-action-view:hover .action-flag-6",
-      "hash" : "f251c82a144e354d241b977992aca356"
-    },
-    "action-flag-7"                  : {
-      "name" : "action-flag-7",
-      "rule" : ".action-flag-7",
-      "hash" : "02c8e4bcca7b2dfd746e6414f3419130"
-    },
-    "action-flag-7-grey"             : {
-      "name" : "action-flag-7-grey",
-      "rule" : ".action-flag-7-grey",
-      "hash" : "cf0b4c737ab286110e2e1e2f1619e7d1"
-    },
-    "action-flag-7-white"            : {
-      "name" : "action-flag-7-white",
-      "rule" : ".action-flag-7-white, .device-desktop .phabricator-action-view:hover .action-flag-7",
-      "hash" : "bc1a5ec732b7d24e78c4dfd686347a6e"
-    },
-    "action-flag-ghost"              : {
-      "name" : "action-flag-ghost",
-      "rule" : ".action-flag-ghost",
-      "hash" : "45e3a9c7a6436fff77a26ac14fe8a2ff"
-    },
-    "action-flag-ghost-grey"         : {
-      "name" : "action-flag-ghost-grey",
-      "rule" : ".action-flag-ghost-grey",
-      "hash" : "effe2cb0f7bf9d8498de00cb9d2219d5"
-    },
-    "action-flag-ghost-white"        : {
-      "name" : "action-flag-ghost-white",
-      "rule" : ".action-flag-ghost-white, .device-desktop .phabricator-action-view:hover .action-flag-ghost",
-      "hash" : "330a6db5d35105eb2a40926ac10bf050"
-    },
-    "action-flag-grey"               : {
-      "name" : "action-flag-grey",
-      "rule" : ".action-flag-grey",
-      "hash" : "19ff6ca97d5a9417711c125342bfd181"
-    },
-    "action-flag-white"              : {
-      "name" : "action-flag-white",
-      "rule" : ".action-flag-white, .device-desktop .phabricator-action-view:hover .action-flag",
-      "hash" : "c75814a0ab1d5efd93eb04bc91ea1d70"
-    },
-    "action-folder-open"             : {
-      "name" : "action-folder-open",
-      "rule" : ".action-folder-open",
-      "hash" : "041a997bd0fe3dc0eab6974cab2f4909"
-    },
-    "action-folder-open-grey"        : {
-      "name" : "action-folder-open-grey",
-      "rule" : ".action-folder-open-grey",
-      "hash" : "78861d4d04e344db11e235dfadfaa0b2"
-    },
-    "action-folder-open-white"       : {
-      "name" : "action-folder-open-white",
-      "rule" : ".action-folder-open-white, .device-desktop .phabricator-action-view:hover .action-folder-open",
-      "hash" : "b6c96d025fbd7d9d2f6184ab2b5255c1"
-    },
-    "action-fork"                    : {
-      "name" : "action-fork",
-      "rule" : ".action-fork",
-      "hash" : "73872362aa5fa8a715bb2b282e8873a7"
-    },
-    "action-fork-grey"               : {
-      "name" : "action-fork-grey",
-      "rule" : ".action-fork-grey",
-      "hash" : "80b616de5d415c74e2561cf85cd5563a"
-    },
-    "action-fork-white"              : {
-      "name" : "action-fork-white",
-      "rule" : ".action-fork-white, .device-desktop .phabricator-action-view:hover .action-fork",
-      "hash" : "ed9479c691af95386f88076a65d73b19"
-    },
-    "action-herald"                  : {
-      "name" : "action-herald",
-      "rule" : ".action-herald",
-      "hash" : "75eb507020fcb7dc6890022513648e85"
-    },
-    "action-herald-grey"             : {
-      "name" : "action-herald-grey",
-      "rule" : ".action-herald-grey",
-      "hash" : "30b633461f095ac3f032eb02398ae67e"
-    },
-    "action-herald-white"            : {
-      "name" : "action-herald-white",
-      "rule" : ".action-herald-white, .device-desktop .phabricator-action-view:hover .action-herald",
-      "hash" : "149fd50929e68d6bcf6310d9e4c316b6"
-    },
-    "action-highlight"               : {
-      "name" : "action-highlight",
-      "rule" : ".action-highlight",
-      "hash" : "4430cca9eab0cbd85d3ee1b5e1f29ae3"
-    },
-    "action-highlight-grey"          : {
-      "name" : "action-highlight-grey",
-      "rule" : ".action-highlight-grey",
-      "hash" : "47fe828e1b61553326752209a8fba6cb"
-    },
-    "action-highlight-white"         : {
-      "name" : "action-highlight-white",
-      "rule" : ".action-highlight-white, .device-desktop .phabricator-action-view:hover .action-highlight",
-      "hash" : "09a52dfdf893ee63be162f0c180d31fe"
-    },
-    "action-history"                 : {
-      "name" : "action-history",
-      "rule" : ".action-history",
-      "hash" : "6669ec72a77a09e3e8c8c5fe941810a9"
-    },
-    "action-history-grey"            : {
-      "name" : "action-history-grey",
-      "rule" : ".action-history-grey",
-      "hash" : "3146a0c0c8698ef95ad74515cc9971ad"
-    },
-    "action-history-white"           : {
-      "name" : "action-history-white",
-      "rule" : ".action-history-white, .device-desktop .phabricator-action-view:hover .action-history",
-      "hash" : "07490563c7cf4e8194918c3700ca1b57"
-    },
-    "action-image"                   : {
-      "name" : "action-image",
-      "rule" : ".action-image",
-      "hash" : "5f03cd1fa806db2861d93a0fba7deff7"
-    },
-    "action-image-grey"              : {
-      "name" : "action-image-grey",
-      "rule" : ".action-image-grey",
-      "hash" : "32e1008c29447da5fc4a263c1b56ce41"
-    },
-    "action-image-white"             : {
-      "name" : "action-image-white",
-      "rule" : ".action-image-white, .device-desktop .phabricator-action-view:hover .action-image",
-      "hash" : "d48be030bf83013fcd3549460f197712"
-    },
-    "action-like"                    : {
-      "name" : "action-like",
-      "rule" : ".action-like",
-      "hash" : "89d7ac4a8642389bded3af9aa464b06b"
-    },
-    "action-like-grey"               : {
-      "name" : "action-like-grey",
-      "rule" : ".action-like-grey",
-      "hash" : "262bdae8449eae9ecfb58246a8457f64"
-    },
-    "action-like-white"              : {
-      "name" : "action-like-white",
-      "rule" : ".action-like-white, .device-desktop .phabricator-action-view:hover .action-like",
-      "hash" : "773b180de4276644cad9688a1f0935ce"
-    },
-    "action-link"                    : {
-      "name" : "action-link",
-      "rule" : ".action-link",
-      "hash" : "bbaed885947840548f9b466fd97aef83"
-    },
-    "action-link-grey"               : {
-      "name" : "action-link-grey",
-      "rule" : ".action-link-grey",
-      "hash" : "c3bd4b5b14e7ed7c522fd148022a9e7b"
-    },
-    "action-link-white"              : {
-      "name" : "action-link-white",
-      "rule" : ".action-link-white, .device-desktop .phabricator-action-view:hover .action-link",
-      "hash" : "e846157dd9d0119d82b2777052acdb3d"
-    },
-    "action-lint-info"               : {
-      "name" : "action-lint-info",
-      "rule" : ".action-lint-info",
-      "hash" : "324e1d2d947862a69df78e68e4a36b1f"
-    },
-    "action-lint-info-grey"          : {
-      "name" : "action-lint-info-grey",
-      "rule" : ".action-lint-info-grey",
-      "hash" : "76eadf42825e50f995b5d8d088ee591f"
-    },
-    "action-lint-info-white"         : {
-      "name" : "action-lint-info-white",
-      "rule" : ".action-lint-info-white, .device-desktop .phabricator-action-view:hover .action-lint-info",
-      "hash" : "ef6d4bb883446171a1a1df66b13b2c66"
-    },
-    "action-lint-ok"                 : {
-      "name" : "action-lint-ok",
-      "rule" : ".action-lint-ok",
-      "hash" : "97b66fc1a5474f00bc1fdda6525820d5"
-    },
-    "action-lint-ok-grey"            : {
-      "name" : "action-lint-ok-grey",
-      "rule" : ".action-lint-ok-grey",
-      "hash" : "eefd06511a24992aef9e486b560c4062"
-    },
-    "action-lint-ok-white"           : {
-      "name" : "action-lint-ok-white",
-      "rule" : ".action-lint-ok-white, .device-desktop .phabricator-action-view:hover .action-lint-ok",
-      "hash" : "f2720295139147930fb78e962450075d"
-    },
-    "action-lint-warning"            : {
-      "name" : "action-lint-warning",
-      "rule" : ".action-lint-warning",
-      "hash" : "d0b1c5f84db953de088056db7fbe1eae"
-    },
-    "action-lint-warning-grey"       : {
-      "name" : "action-lint-warning-grey",
-      "rule" : ".action-lint-warning-grey",
-      "hash" : "f4f73032f5f2310d7731affba2318d5d"
-    },
-    "action-lint-warning-white"      : {
-      "name" : "action-lint-warning-white",
-      "rule" : ".action-lint-warning-white, .device-desktop .phabricator-action-view:hover .action-lint-warning",
-      "hash" : "d540c0afe65862f5c32c934f1956ca36"
-    },
-    "action-lock"                    : {
-      "name" : "action-lock",
-      "rule" : ".action-lock",
-      "hash" : "7ca88645707cf9cd69ace1e416c0f964"
-    },
-    "action-lock-grey"               : {
-      "name" : "action-lock-grey",
-      "rule" : ".action-lock-grey",
-      "hash" : "c95e9a3071dc3bc389c235c49a5c5388"
-    },
-    "action-lock-white"              : {
-      "name" : "action-lock-white",
-      "rule" : ".action-lock-white, .device-desktop .phabricator-action-view:hover .action-lock",
-      "hash" : "e6f5edd8fdfadab84dd95e5582ac1db1"
-    },
-    "action-love"                    : {
-      "name" : "action-love",
-      "rule" : ".action-love",
-      "hash" : "9f101bddc6deba2b128bdc7bb45d583a"
-    },
-    "action-love-grey"               : {
-      "name" : "action-love-grey",
-      "rule" : ".action-love-grey",
-      "hash" : "615fa9c17fa8a9e0b27846f3c99fdd87"
-    },
-    "action-love-white"              : {
-      "name" : "action-love-white",
-      "rule" : ".action-love-white, .device-desktop .phabricator-action-view:hover .action-love",
-      "hash" : "5f92d9a4565e79b96c956f054ede993a"
-    },
-    "action-merge"                   : {
-      "name" : "action-merge",
-      "rule" : ".action-merge",
-      "hash" : "0c7cb3934262b3374f5c94e36c826672"
-    },
-    "action-merge-grey"              : {
-      "name" : "action-merge-grey",
-      "rule" : ".action-merge-grey",
-      "hash" : "e8c11bd0a92a273ba5f90fee8bd31fb6"
-    },
-    "action-merge-white"             : {
-      "name" : "action-merge-white",
-      "rule" : ".action-merge-white, .device-desktop .phabricator-action-view:hover .action-merge",
-      "hash" : "433a26913a0db78eb707edf0dbbf0fdc"
-    },
-    "action-message"                 : {
-      "name" : "action-message",
-      "rule" : ".action-message",
-      "hash" : "c14b8eb1f70855eb801c42c5f04ea5d0"
-    },
-    "action-message-grey"            : {
-      "name" : "action-message-grey",
-      "rule" : ".action-message-grey",
-      "hash" : "93574f7b8adadc01b036b2376e7b1eb1"
-    },
-    "action-message-white"           : {
-      "name" : "action-message-white",
-      "rule" : ".action-message-white, .device-desktop .phabricator-action-view:hover .action-message",
-      "hash" : "3fe1df81d1af648ac1e483e2a081ed62"
-    },
-    "action-meta-mta"                : {
-      "name" : "action-meta-mta",
-      "rule" : ".action-meta-mta",
-      "hash" : "3895ce9ea717cc0a1bcc2f93015a5c86"
-    },
-    "action-meta-mta-grey"           : {
-      "name" : "action-meta-mta-grey",
-      "rule" : ".action-meta-mta-grey",
-      "hash" : "873f04635a614bce012cfc82837b6be1"
-    },
-    "action-meta-mta-white"          : {
-      "name" : "action-meta-mta-white",
-      "rule" : ".action-meta-mta-white, .device-desktop .phabricator-action-view:hover .action-meta-mta",
-      "hash" : "8d1edd5f73363a7057474364850abc39"
-    },
-    "action-move"                    : {
-      "name" : "action-move",
-      "rule" : ".action-move",
-      "hash" : "fa5d4f6c263a4cad009990a3f00c1819"
-    },
-    "action-move-grey"               : {
-      "name" : "action-move-grey",
-      "rule" : ".action-move-grey",
-      "hash" : "201db3f4614022b6e57c2168aa9f7298"
-    },
-    "action-move-white"              : {
-      "name" : "action-move-white",
-      "rule" : ".action-move-white, .device-desktop .phabricator-action-view:hover .action-move",
-      "hash" : "d7f6217f85f2cfa45d7e44bd06d3f438"
-    },
-    "action-new"                     : {
-      "name" : "action-new",
-      "rule" : ".action-new",
-      "hash" : "62ce1bb9b7c8252f58a37c655b7ed377"
-    },
-    "action-new-grey"                : {
-      "name" : "action-new-grey",
-      "rule" : ".action-new-grey",
-      "hash" : "5d96082b216b783d6256ee3cc755dc87"
-    },
-    "action-new-white"               : {
-      "name" : "action-new-white",
-      "rule" : ".action-new-white, .device-desktop .phabricator-action-view:hover .action-new, .phabricator-application-launch-create:hover .phabricator-application-create-icon.action-new-grey",
-      "hash" : "782f8bc8dc883c0637910e5fbc3c6f9f"
-    },
-    "action-none"                    : {
-      "name" : "action-none",
-      "rule" : ".action-none",
-      "hash" : "5595f8625292cd95d1240ed429dc880c"
-    },
-    "action-none-grey"               : {
-      "name" : "action-none-grey",
-      "rule" : ".action-none-grey",
-      "hash" : "76d2d2e3fff56f21759d03dd5c17331c"
-    },
-    "action-none-white"              : {
-      "name" : "action-none-white",
-      "rule" : ".action-none-white, .device-desktop .phabricator-action-view:hover .action-none",
-      "hash" : "69ce41011458cfbdabb1a9fb7537d087"
-    },
-    "action-perflab"                 : {
-      "name" : "action-perflab",
-      "rule" : ".action-perflab",
-      "hash" : "ec1acf5413f771b1f2782aa759074764"
-    },
-    "action-perflab-grey"            : {
-      "name" : "action-perflab-grey",
-      "rule" : ".action-perflab-grey",
-      "hash" : "2f7fa40824ccf254322e60e216f1d50e"
-    },
-    "action-perflab-white"           : {
-      "name" : "action-perflab-white",
-      "rule" : ".action-perflab-white, .device-desktop .phabricator-action-view:hover .action-perflab",
-      "hash" : "aac6b8b9fa044430375ba370243292cb"
-    },
-    "action-preview"                 : {
-      "name" : "action-preview",
-      "rule" : ".action-preview",
-      "hash" : "a33cb74fc6e1b9665ac4ff20635babe8"
-    },
-    "action-preview-grey"            : {
-      "name" : "action-preview-grey",
-      "rule" : ".action-preview-grey",
-      "hash" : "4cfe3a27e5e818ea9f7805a7c1b05fa7"
-    },
-    "action-preview-white"           : {
-      "name" : "action-preview-white",
-      "rule" : ".action-preview-white, .device-desktop .phabricator-action-view:hover .action-preview",
-      "hash" : "61523a3b9edc3d0ddfea9f399bae0fe1"
-    },
-    "action-refresh"                 : {
-      "name" : "action-refresh",
-      "rule" : ".action-refresh",
-      "hash" : "d5d7cf16bfe862d0a101ccf216b76df1"
-    },
-    "action-refresh-grey"            : {
-      "name" : "action-refresh-grey",
-      "rule" : ".action-refresh-grey",
-      "hash" : "b4838ee697b2a9b70dc6920da7ab3e89"
-    },
-    "action-refresh-white"           : {
-      "name" : "action-refresh-white",
-      "rule" : ".action-refresh-white, .device-desktop .phabricator-action-view:hover .action-refresh",
-      "hash" : "44fa7fc18a847416b9db3858e0b47737"
-    },
-    "action-remove"                  : {
-      "name" : "action-remove",
-      "rule" : ".action-remove",
-      "hash" : "4c9dcad5540a611a5e05380d7982a601"
-    },
-    "action-remove-grey"             : {
-      "name" : "action-remove-grey",
-      "rule" : ".action-remove-grey",
-      "hash" : "dc0b179b0a96dd5c9f387ee41daf77a7"
-    },
-    "action-remove-white"            : {
-      "name" : "action-remove-white",
-      "rule" : ".action-remove-white, .device-desktop .phabricator-action-view:hover .action-remove",
-      "hash" : "8c750027adb708e8507a51986081d309"
-    },
-    "action-search"                  : {
-      "name" : "action-search",
-      "rule" : ".action-search",
-      "hash" : "1340e68f4f2b55c5feee4a0241672c82"
-    },
-    "action-search-grey"             : {
-      "name" : "action-search-grey",
-      "rule" : ".action-search-grey",
-      "hash" : "a7e598337c9a8a6feb3de62247abb611"
-    },
-    "action-search-white"            : {
-      "name" : "action-search-white",
-      "rule" : ".action-search-white, .device-desktop .phabricator-action-view:hover .action-search",
-      "hash" : "91e764bd3ed921153ac66fc56e04b884"
-    },
-    "action-start-sandcastle"        : {
-      "name" : "action-start-sandcastle",
-      "rule" : ".action-start-sandcastle",
-      "hash" : "52f245ddeff53c5cf084c27b6e45b152"
-    },
-    "action-start-sandcastle-grey"   : {
-      "name" : "action-start-sandcastle-grey",
-      "rule" : ".action-start-sandcastle-grey",
-      "hash" : "d41cff7a3c898616f75634c8d796cd6c"
-    },
-    "action-start-sandcastle-white"  : {
-      "name" : "action-start-sandcastle-white",
-      "rule" : ".action-start-sandcastle-white, .device-desktop .phabricator-action-view:hover .action-start-sandcastle",
-      "hash" : "04959e4bcf29b57213e5b49ab6f25aeb"
-    },
-    "action-subscribe-add"           : {
-      "name" : "action-subscribe-add",
-      "rule" : ".action-subscribe-add",
-      "hash" : "1b166c23ed6a971d2f93d37147caf622"
-    },
-    "action-subscribe-add-grey"      : {
-      "name" : "action-subscribe-add-grey",
-      "rule" : ".action-subscribe-add-grey",
-      "hash" : "2b2fd9749636140f78233bef8e604d56"
-    },
-    "action-subscribe-add-white"     : {
-      "name" : "action-subscribe-add-white",
-      "rule" : ".action-subscribe-add-white, .device-desktop .phabricator-action-view:hover .action-subscribe-add",
-      "hash" : "2ca899f12f05b03c5c54cbac08d2b74d"
-    },
-    "action-subscribe-auto"          : {
-      "name" : "action-subscribe-auto",
-      "rule" : ".action-subscribe-auto",
-      "hash" : "a6cd0083b657b924882d830cd4f91bbc"
-    },
-    "action-subscribe-auto-grey"     : {
-      "name" : "action-subscribe-auto-grey",
-      "rule" : ".action-subscribe-auto-grey",
-      "hash" : "77ccbf046a3a39ebf20ba6e58e865438"
-    },
-    "action-subscribe-auto-white"    : {
-      "name" : "action-subscribe-auto-white",
-      "rule" : ".action-subscribe-auto-white, .device-desktop .phabricator-action-view:hover .action-subscribe-auto",
-      "hash" : "f22920740beb517bb7d33ae91462907d"
-    },
-    "action-subscribe-delete"        : {
-      "name" : "action-subscribe-delete",
-      "rule" : ".action-subscribe-delete",
-      "hash" : "e78959e3ed89af610da59e8ef77c799d"
-    },
-    "action-subscribe-delete-grey"   : {
-      "name" : "action-subscribe-delete-grey",
-      "rule" : ".action-subscribe-delete-grey",
-      "hash" : "e3e8d142bdd4d1acfebcd03c790ac5b5"
-    },
-    "action-subscribe-delete-white"  : {
-      "name" : "action-subscribe-delete-white",
-      "rule" : ".action-subscribe-delete-white, .device-desktop .phabricator-action-view:hover .action-subscribe-delete",
-      "hash" : "1368667fb8b115c95512eda55d7065a5"
-    },
-    "action-tag"                     : {
-      "name" : "action-tag",
-      "rule" : ".action-tag",
-      "hash" : "2574ffef0cafe758774e358bd6e5cd6a"
-    },
-    "action-tag-grey"                : {
-      "name" : "action-tag-grey",
-      "rule" : ".action-tag-grey",
-      "hash" : "e8194bcfb48d63a5a8c5ce69a0a3dcc5"
-    },
-    "action-tag-white"               : {
-      "name" : "action-tag-white",
-      "rule" : ".action-tag-white, .device-desktop .phabricator-action-view:hover .action-tag",
-      "hash" : "2d54a42a650a987ce706c2d935ff33cd"
-    },
-    "action-transcript"              : {
-      "name" : "action-transcript",
-      "rule" : ".action-transcript",
-      "hash" : "6be4d47abddeb109216f346787face70"
-    },
-    "action-transcript-grey"         : {
-      "name" : "action-transcript-grey",
-      "rule" : ".action-transcript-grey",
-      "hash" : "9ed35e5d39536a4b8dd934039c742447"
-    },
-    "action-transcript-white"        : {
-      "name" : "action-transcript-white",
-      "rule" : ".action-transcript-white, .device-desktop .phabricator-action-view:hover .action-transcript",
-      "hash" : "7c3df910499b8ddb85c2f53e0d58c0db"
-    },
-    "action-undo"                    : {
-      "name" : "action-undo",
-      "rule" : ".action-undo",
-      "hash" : "f81151e242bb8ae29714bec10cb7c5f1"
-    },
-    "action-undo-grey"               : {
-      "name" : "action-undo-grey",
-      "rule" : ".action-undo-grey",
-      "hash" : "8d4b0bc147b463011ec00321ba75b17f"
-    },
-    "action-undo-white"              : {
-      "name" : "action-undo-white",
-      "rule" : ".action-undo-white, .device-desktop .phabricator-action-view:hover .action-undo",
-      "hash" : "39b777060ce1d1b0c68c550bb63d7146"
-    },
-    "action-unlock"                  : {
-      "name" : "action-unlock",
-      "rule" : ".action-unlock",
-      "hash" : "d7cc6ffcda62a90e455d37ca0f07d0dd"
-    },
-    "action-unlock-grey"             : {
-      "name" : "action-unlock-grey",
-      "rule" : ".action-unlock-grey",
-      "hash" : "efdc3048fa3a4051a43f43a915e53b0e"
-    },
-    "action-unlock-white"            : {
-      "name" : "action-unlock-white",
-      "rule" : ".action-unlock-white, .device-desktop .phabricator-action-view:hover .action-unlock",
-      "hash" : "d0e7aff47724d94167e9bcb11eb5e6aa"
-    },
-    "action-unmerge"                 : {
-      "name" : "action-unmerge",
-      "rule" : ".action-unmerge",
-      "hash" : "00d417a336f6e076bb587cd4cef5eb49"
-    },
-    "action-unmerge-grey"            : {
-      "name" : "action-unmerge-grey",
-      "rule" : ".action-unmerge-grey",
-      "hash" : "904a51920678c838b72c934085f339a7"
-    },
-    "action-unmerge-white"           : {
-      "name" : "action-unmerge-white",
-      "rule" : ".action-unmerge-white, .device-desktop .phabricator-action-view:hover .action-unmerge",
-      "hash" : "2e5761de881642c94e641879bbde318f"
-    },
-    "action-unpublish"               : {
-      "name" : "action-unpublish",
-      "rule" : ".action-unpublish",
-      "hash" : "88d21b9ce49b7ac886250df307f756ce"
-    },
-    "action-unpublish-grey"          : {
-      "name" : "action-unpublish-grey",
-      "rule" : ".action-unpublish-grey",
-      "hash" : "5c4fe69253100e9ca292348af13b9f3f"
-    },
-    "action-unpublish-white"         : {
-      "name" : "action-unpublish-white",
-      "rule" : ".action-unpublish-white, .device-desktop .phabricator-action-view:hover .action-unpublish",
-      "hash" : "f663861c0776cea790d8392e4aa2fc5d"
-    },
-    "action-upload"                  : {
-      "name" : "action-upload",
-      "rule" : ".action-upload",
-      "hash" : "bdd10302988fe6d2130f0dfc3b67d281"
-    },
-    "action-upload-grey"             : {
-      "name" : "action-upload-grey",
-      "rule" : ".action-upload-grey",
-      "hash" : "f376bbbbadefea220ec02ca3ae53d41a"
-    },
-    "action-upload-white"            : {
-      "name" : "action-upload-white",
-      "rule" : ".action-upload-white, .device-desktop .phabricator-action-view:hover .action-upload",
-      "hash" : "4b31d9dc6f17bd0cd54c3dcea7a95313"
-    },
-    "action-warning"                 : {
-      "name" : "action-warning",
-      "rule" : ".action-warning",
-      "hash" : "950ac4ea5e65de41aca0788e6769650f"
-    },
-    "action-warning-grey"            : {
-      "name" : "action-warning-grey",
-      "rule" : ".action-warning-grey",
-      "hash" : "180e305268970291f6a38760deea0d4c"
-    },
-    "action-warning-white"           : {
-      "name" : "action-warning-white",
-      "rule" : ".action-warning-white, .device-desktop .phabricator-action-view:hover .action-warning",
-      "hash" : "4ec3034629bc144886cd7aae5412dce2"
-    },
-    "action-world"                   : {
-      "name" : "action-world",
-      "rule" : ".action-world",
-      "hash" : "95ebc5ab6e70ab9d794f0960f2a43559"
-    },
-    "action-world-grey"              : {
-      "name" : "action-world-grey",
-      "rule" : ".action-world-grey",
-      "hash" : "969b164f2f5580f9226f293dbcfe50bc"
-    },
-    "action-world-white"             : {
-      "name" : "action-world-white",
-      "rule" : ".action-world-white, .device-desktop .phabricator-action-view:hover .action-world",
-      "hash" : "106ab6c8bc5a685cd0837baaa6c617e4"
-    },
-    "remarkup-assist-text_b"         : {
-      "name" : "remarkup-assist-text_b",
-      "rule" : ".remarkup-assist-b",
-      "hash" : "b2e7ba9cba2946a78ac8045d83852ade"
-    },
-    "remarkup-assist-text_chaos"     : {
-      "name" : "remarkup-assist-text_chaos",
-      "rule" : ".remarkup-assist-chaos",
-      "hash" : "c5c1e04004a7f24e9e222eee034a975a"
-    },
-    "remarkup-assist-text_chaos_off" : {
-      "name" : "remarkup-assist-text_chaos_off",
-      "rule" : ".remarkup-control-chaos-mode .remarkup-assist-chaos",
-      "hash" : "40c8cc1f8f52cdb70c70fd00ce436f3b"
-    },
-    "remarkup-assist-text_code"      : {
-      "name" : "remarkup-assist-text_code",
-      "rule" : ".remarkup-assist-code",
-      "hash" : "c0527e968c770450d4aa7cefe38271b8"
-    },
-    "remarkup-assist-text_help"      : {
-      "name" : "remarkup-assist-text_help",
-      "rule" : ".remarkup-assist-help",
-      "hash" : "e8312c555e5f3935d8e2dcf44147b7f8"
-    },
-    "remarkup-assist-text_i"         : {
-      "name" : "remarkup-assist-text_i",
-      "rule" : ".remarkup-assist-i",
-      "hash" : "19d4c474555d75d0e4739ec7097dbfa4"
-    },
-    "remarkup-assist-text_image"     : {
-      "name" : "remarkup-assist-text_image",
-      "rule" : ".remarkup-assist-image",
-      "hash" : "5a560800fa31b24d18807b430797ac95"
-    },
-    "remarkup-assist-text_larger"    : {
-      "name" : "remarkup-assist-text_larger",
-      "rule" : ".remarkup-assist-larger",
-      "hash" : "5cd9c8223c99ef3409c82dfaefeebc50"
-    },
-    "remarkup-assist-text_meme"      : {
-      "name" : "remarkup-assist-text_meme",
-      "rule" : ".remarkup-assist-meme",
-      "hash" : "ff98a508db2348b3d46aaf8225b26862"
-    },
-    "remarkup-assist-text_ol"        : {
-      "name" : "remarkup-assist-text_ol",
-      "rule" : ".remarkup-assist-ol",
-      "hash" : "a2805d44ca0eac518f99109c4969f450"
-    },
-    "remarkup-assist-text_order"     : {
-      "name" : "remarkup-assist-text_order",
-      "rule" : ".remarkup-assist-order",
-      "hash" : "9eb7710b469dfbdf7093ab84b9a28a37"
-    },
-    "remarkup-assist-text_order_off" : {
-      "name" : "remarkup-assist-text_order_off",
-      "rule" : ".remarkup-control-order-mode .remarkup-assist-order",
-      "hash" : "c32fbbdde8bd18f7bdc287935d73024a"
-    },
-    "remarkup-assist-text_table"     : {
-      "name" : "remarkup-assist-text_table",
-      "rule" : ".remarkup-assist-table",
-      "hash" : "2ae3fb49af42f07038d77aa5b62862c0"
-    },
-    "remarkup-assist-text_tag"       : {
-      "name" : "remarkup-assist-text_tag",
-      "rule" : ".remarkup-assist-tag",
-      "hash" : "446c23bff9fc7da885ea574f073eaf0f"
-    },
-    "remarkup-assist-text_tt"        : {
-      "name" : "remarkup-assist-text_tt",
-      "rule" : ".remarkup-assist-tt",
-      "hash" : "77ae74c8a9a02fde5565399409dc5ab3"
-    },
-    "remarkup-assist-text_ul"        : {
-      "name" : "remarkup-assist-text_ul",
-      "rule" : ".remarkup-assist-ul",
-      "hash" : "cf3c6b4f809377b7eff9fcef42fc47df"
-    }
-  },
-  "scales"  : [
-    1,
-    2
-  ],
-  "header"  : "\/**\n * @provides sprite-icon-css\n * @generated\n *\/\n\n.sprite-icon {\n  background-image: url(\/rsrc\/image\/sprite-icon.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-icon {\n    background-image: url(\/rsrc\/image\/sprite-icon-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
-  "type"    : "standard"
-}
diff --git a/resources/sprite/manifest/icons.json b/resources/sprite/manifest/icons.json
new file mode 100644
index 0000000000..8a424c60cd
--- /dev/null
+++ b/resources/sprite/manifest/icons.json
@@ -0,0 +1,1051 @@
+{
+  "version" : 1,
+  "sprites" : {
+    "icons-action-menu"              : {
+      "name" : "icons-action-menu",
+      "rule" : ".icons-action-menu",
+      "hash" : "d5d890fa35a9d970add84f8a84d9c427"
+    },
+    "icons-action-menu-grey"         : {
+      "name" : "icons-action-menu-grey",
+      "rule" : ".icons-action-menu-grey",
+      "hash" : "1e74d6e6d5dd767f45dbd9b60c267871"
+    },
+    "icons-action-menu-white"        : {
+      "name" : "icons-action-menu-white",
+      "rule" : ".icons-action-menu-white, .device-desktop .phabricator-action-view:hover .icons-action-menu",
+      "hash" : "451f233efeff33ccea200a2328d30803"
+    },
+    "icons-arrow_left"               : {
+      "name" : "icons-arrow_left",
+      "rule" : ".icons-arrow_left",
+      "hash" : "439cd6051e6aab63b62d1e47f00ad4a0"
+    },
+    "icons-arrow_left-grey"          : {
+      "name" : "icons-arrow_left-grey",
+      "rule" : ".icons-arrow_left-grey",
+      "hash" : "a3d0d34ef06a95685bf7a3e05eb97045"
+    },
+    "icons-arrow_left-white"         : {
+      "name" : "icons-arrow_left-white",
+      "rule" : ".icons-arrow_left-white, .device-desktop .phabricator-action-view:hover .icons-arrow_left",
+      "hash" : "e113bc929cedac55146edcf6e22f2fe0"
+    },
+    "icons-arrow_right"              : {
+      "name" : "icons-arrow_right",
+      "rule" : ".icons-arrow_right",
+      "hash" : "06b693491c0594d4e7ff537dbd725a98"
+    },
+    "icons-arrow_right-grey"         : {
+      "name" : "icons-arrow_right-grey",
+      "rule" : ".icons-arrow_right-grey",
+      "hash" : "894f051068f9e206d96576ca6d14fd4f"
+    },
+    "icons-arrow_right-white"        : {
+      "name" : "icons-arrow_right-white",
+      "rule" : ".icons-arrow_right-white, .device-desktop .phabricator-action-view:hover .icons-arrow_right",
+      "hash" : "aebf657073a1a85eeb0887cf32db8f08"
+    },
+    "icons-attach"                   : {
+      "name" : "icons-attach",
+      "rule" : ".icons-attach",
+      "hash" : "a062d26bbe37abd305998545885fb1c0"
+    },
+    "icons-attach-grey"              : {
+      "name" : "icons-attach-grey",
+      "rule" : ".icons-attach-grey",
+      "hash" : "09eae1092a9f48ec48b8970be67351b7"
+    },
+    "icons-attach-white"             : {
+      "name" : "icons-attach-white",
+      "rule" : ".icons-attach-white, .device-desktop .phabricator-action-view:hover .icons-attach",
+      "hash" : "1f69f442d87f6e27980229dbedfbf728"
+    },
+    "icons-blame"                    : {
+      "name" : "icons-blame",
+      "rule" : ".icons-blame",
+      "hash" : "81fbaa234aed3a379c403aa0c7f3c7eb"
+    },
+    "icons-blame-grey"               : {
+      "name" : "icons-blame-grey",
+      "rule" : ".icons-blame-grey",
+      "hash" : "4b383ffb76ee537ce9b6fadb8d2ee160"
+    },
+    "icons-blame-white"              : {
+      "name" : "icons-blame-white",
+      "rule" : ".icons-blame-white, .device-desktop .phabricator-action-view:hover .icons-blame",
+      "hash" : "e975ef46298c46530659e12fbd012292"
+    },
+    "icons-check"                    : {
+      "name" : "icons-check",
+      "rule" : ".icons-check",
+      "hash" : "c8b9c56214fd39a4ba99e07e1fa72e22"
+    },
+    "icons-check-grey"               : {
+      "name" : "icons-check-grey",
+      "rule" : ".icons-check-grey",
+      "hash" : "2375808574c858425660eac59d80e29a"
+    },
+    "icons-check-white"              : {
+      "name" : "icons-check-white",
+      "rule" : ".icons-check-white, .device-desktop .phabricator-action-view:hover .icons-check",
+      "hash" : "803fbc2117621cf946af270cf5bed06b"
+    },
+    "icons-comment"                  : {
+      "name" : "icons-comment",
+      "rule" : ".icons-comment",
+      "hash" : "bb9067094e0cb805dc597eb0ebdd94f9"
+    },
+    "icons-comment-grey"             : {
+      "name" : "icons-comment-grey",
+      "rule" : ".icons-comment-grey",
+      "hash" : "8d71bd6c89116ca02aef8ce830514022"
+    },
+    "icons-comment-white"            : {
+      "name" : "icons-comment-white",
+      "rule" : ".icons-comment-white, .device-desktop .phabricator-action-view:hover .icons-comment",
+      "hash" : "48bfa57a5b06edcf08329b47fc546071"
+    },
+    "icons-computer"                 : {
+      "name" : "icons-computer",
+      "rule" : ".icons-computer",
+      "hash" : "4e25c6822b815a2c29478082012d1237"
+    },
+    "icons-computer-grey"            : {
+      "name" : "icons-computer-grey",
+      "rule" : ".icons-computer-grey",
+      "hash" : "d2972bca3937fc49e859019c0fd6647f"
+    },
+    "icons-computer-white"           : {
+      "name" : "icons-computer-white",
+      "rule" : ".icons-computer-white, .device-desktop .phabricator-action-view:hover .icons-computer",
+      "hash" : "154afcf0ee1539c0d5a273c971a8c6e1"
+    },
+    "icons-create"                   : {
+      "name" : "icons-create",
+      "rule" : ".icons-create",
+      "hash" : "5901de6f71af459888d1b277d0726916"
+    },
+    "icons-create-grey"              : {
+      "name" : "icons-create-grey",
+      "rule" : ".icons-create-grey",
+      "hash" : "3efad05cb3ac57da962e2bc1c5ff2308"
+    },
+    "icons-create-white"             : {
+      "name" : "icons-create-white",
+      "rule" : ".icons-create-white, .device-desktop .phabricator-action-view:hover .icons-create",
+      "hash" : "8e06e0eb1031b008ca4a32eba9934289"
+    },
+    "icons-delete"                   : {
+      "name" : "icons-delete",
+      "rule" : ".icons-delete",
+      "hash" : "41bbd0d0d4cb69b2b5423367603187e3"
+    },
+    "icons-delete-grey"              : {
+      "name" : "icons-delete-grey",
+      "rule" : ".icons-delete-grey",
+      "hash" : "244047621dbeefd392c4c7f3059a9e6a"
+    },
+    "icons-delete-white"             : {
+      "name" : "icons-delete-white",
+      "rule" : ".icons-delete-white, .device-desktop .phabricator-action-view:hover .icons-delete",
+      "hash" : "deb1e03b1aa95a07fa16ee82f9605914"
+    },
+    "icons-disable"                  : {
+      "name" : "icons-disable",
+      "rule" : ".icons-disable",
+      "hash" : "e0db051423597acbf4611467227989f3"
+    },
+    "icons-disable-grey"             : {
+      "name" : "icons-disable-grey",
+      "rule" : ".icons-disable-grey",
+      "hash" : "301c0440f503fba4c3e1d0adc9f8dad6"
+    },
+    "icons-disable-white"            : {
+      "name" : "icons-disable-white",
+      "rule" : ".icons-disable-white, .device-desktop .phabricator-action-view:hover .icons-disable",
+      "hash" : "cb5ee0cda04760e0568e8245a807754f"
+    },
+    "icons-dislike"                  : {
+      "name" : "icons-dislike",
+      "rule" : ".icons-dislike",
+      "hash" : "fbacfb7af00bdbd738039643cdf5bc51"
+    },
+    "icons-dislike-grey"             : {
+      "name" : "icons-dislike-grey",
+      "rule" : ".icons-dislike-grey",
+      "hash" : "73fcb492401b2b18785857f843e577f0"
+    },
+    "icons-dislike-white"            : {
+      "name" : "icons-dislike-white",
+      "rule" : ".icons-dislike-white, .device-desktop .phabricator-action-view:hover .icons-dislike",
+      "hash" : "6ea8a6df9208f9a790702d801589be7e"
+    },
+    "icons-download"                 : {
+      "name" : "icons-download",
+      "rule" : ".icons-download",
+      "hash" : "a3edf236a8d30a71b46f5126ac32bd6e"
+    },
+    "icons-download-alt"             : {
+      "name" : "icons-download-alt",
+      "rule" : ".icons-download-alt",
+      "hash" : "eb4d4a8d850b7404332bd4d36067b00a"
+    },
+    "icons-download-alt-grey"        : {
+      "name" : "icons-download-alt-grey",
+      "rule" : ".icons-download-alt-grey",
+      "hash" : "e19cba41b19ed423ba72d5ec1447cdca"
+    },
+    "icons-download-alt-white"       : {
+      "name" : "icons-download-alt-white",
+      "rule" : ".icons-download-alt-white, .device-desktop .phabricator-action-view:hover .icons-download-alt",
+      "hash" : "40bd588c9478a92ba592eadb0cd2255d"
+    },
+    "icons-download-grey"            : {
+      "name" : "icons-download-grey",
+      "rule" : ".icons-download-grey",
+      "hash" : "35df8e7bea8392edfad0e41ffba56204"
+    },
+    "icons-download-white"           : {
+      "name" : "icons-download-white",
+      "rule" : ".icons-download-white, .device-desktop .phabricator-action-view:hover .icons-download",
+      "hash" : "88650982d63c7fe1b0df57f19b73764e"
+    },
+    "icons-edit"                     : {
+      "name" : "icons-edit",
+      "rule" : ".icons-edit",
+      "hash" : "37b7c707bb18feb66fbad36cd99f82be"
+    },
+    "icons-edit-grey"                : {
+      "name" : "icons-edit-grey",
+      "rule" : ".icons-edit-grey",
+      "hash" : "a41905d50572da65d4c7e31c6bd5b9cb"
+    },
+    "icons-edit-white"               : {
+      "name" : "icons-edit-white",
+      "rule" : ".icons-edit-white, .device-desktop .phabricator-action-view:hover .icons-edit",
+      "hash" : "31a23bb50808f363fb8f92ac1774348a"
+    },
+    "icons-enable"                   : {
+      "name" : "icons-enable",
+      "rule" : ".icons-enable",
+      "hash" : "ac321d05767830df55141e143a412c59"
+    },
+    "icons-enable-grey"              : {
+      "name" : "icons-enable-grey",
+      "rule" : ".icons-enable-grey",
+      "hash" : "637dcb6c96460ffd8e7dc9bcce105665"
+    },
+    "icons-enable-white"             : {
+      "name" : "icons-enable-white",
+      "rule" : ".icons-enable-white, .device-desktop .phabricator-action-view:hover .icons-enable",
+      "hash" : "3856031f36cf1126c6b375419b872158"
+    },
+    "icons-file"                     : {
+      "name" : "icons-file",
+      "rule" : ".icons-file",
+      "hash" : "7ddd35db36264115fb7c0a219f561753"
+    },
+    "icons-file-grey"                : {
+      "name" : "icons-file-grey",
+      "rule" : ".icons-file-grey",
+      "hash" : "d1147f0cd62b48c8fca06cbe923c0330"
+    },
+    "icons-file-white"               : {
+      "name" : "icons-file-white",
+      "rule" : ".icons-file-white, .device-desktop .phabricator-action-view:hover .icons-file",
+      "hash" : "bb5434e03f07ba3ab4db4a08c91a5a95"
+    },
+    "icons-flag"                     : {
+      "name" : "icons-flag",
+      "rule" : ".icons-flag",
+      "hash" : "da0e4bc0ee0b7ca4f307e347a9fe6f85"
+    },
+    "icons-flag-0"                   : {
+      "name" : "icons-flag-0",
+      "rule" : ".icons-flag-0",
+      "hash" : "e3c9d406418889ac7f219dc2e4e3695d"
+    },
+    "icons-flag-0-grey"              : {
+      "name" : "icons-flag-0-grey",
+      "rule" : ".icons-flag-0-grey",
+      "hash" : "d48a88e9782cfc132799f8df5c828fee"
+    },
+    "icons-flag-0-white"             : {
+      "name" : "icons-flag-0-white",
+      "rule" : ".icons-flag-0-white, .device-desktop .phabricator-action-view:hover .icons-flag-0",
+      "hash" : "745431f4973ca195c418544375f56163"
+    },
+    "icons-flag-1"                   : {
+      "name" : "icons-flag-1",
+      "rule" : ".icons-flag-1",
+      "hash" : "76ec571366cba7f3440fdb1c4b9118be"
+    },
+    "icons-flag-1-grey"              : {
+      "name" : "icons-flag-1-grey",
+      "rule" : ".icons-flag-1-grey",
+      "hash" : "d5807977961d63b8c52754077a68b2e0"
+    },
+    "icons-flag-1-white"             : {
+      "name" : "icons-flag-1-white",
+      "rule" : ".icons-flag-1-white, .device-desktop .phabricator-action-view:hover .icons-flag-1",
+      "hash" : "b8d0afbab58acf0a573dd28d3ad51de3"
+    },
+    "icons-flag-2"                   : {
+      "name" : "icons-flag-2",
+      "rule" : ".icons-flag-2",
+      "hash" : "e6d3a4ecf63079d053adae81d45c4f0a"
+    },
+    "icons-flag-2-grey"              : {
+      "name" : "icons-flag-2-grey",
+      "rule" : ".icons-flag-2-grey",
+      "hash" : "516c5a8e041b65aea5ddbdb7542b3d12"
+    },
+    "icons-flag-2-white"             : {
+      "name" : "icons-flag-2-white",
+      "rule" : ".icons-flag-2-white, .device-desktop .phabricator-action-view:hover .icons-flag-2",
+      "hash" : "7c013e587c0e7522952413749e62bd62"
+    },
+    "icons-flag-3"                   : {
+      "name" : "icons-flag-3",
+      "rule" : ".icons-flag-3",
+      "hash" : "4bd5ac1c2c0ed4765000fb49811d2c68"
+    },
+    "icons-flag-3-grey"              : {
+      "name" : "icons-flag-3-grey",
+      "rule" : ".icons-flag-3-grey",
+      "hash" : "f471dcb2c59b7ce1ac83057e71cd3560"
+    },
+    "icons-flag-3-white"             : {
+      "name" : "icons-flag-3-white",
+      "rule" : ".icons-flag-3-white, .device-desktop .phabricator-action-view:hover .icons-flag-3",
+      "hash" : "a8eaacbb09c261565ca05a2672b1fdd8"
+    },
+    "icons-flag-4"                   : {
+      "name" : "icons-flag-4",
+      "rule" : ".icons-flag-4",
+      "hash" : "f5e87f3bcd0617174961f25c51c7dcc7"
+    },
+    "icons-flag-4-grey"              : {
+      "name" : "icons-flag-4-grey",
+      "rule" : ".icons-flag-4-grey",
+      "hash" : "a2893da9d76f4765782064035313fb2f"
+    },
+    "icons-flag-4-white"             : {
+      "name" : "icons-flag-4-white",
+      "rule" : ".icons-flag-4-white, .device-desktop .phabricator-action-view:hover .icons-flag-4",
+      "hash" : "5a1c34e6ccaf9f60e51867e593fe86fe"
+    },
+    "icons-flag-5"                   : {
+      "name" : "icons-flag-5",
+      "rule" : ".icons-flag-5",
+      "hash" : "1100ba1c1351fe594c66a7d68b4f55ce"
+    },
+    "icons-flag-5-grey"              : {
+      "name" : "icons-flag-5-grey",
+      "rule" : ".icons-flag-5-grey",
+      "hash" : "ef2bb6c72aadb0945f9f56bf24c14174"
+    },
+    "icons-flag-5-white"             : {
+      "name" : "icons-flag-5-white",
+      "rule" : ".icons-flag-5-white, .device-desktop .phabricator-action-view:hover .icons-flag-5",
+      "hash" : "ab3f27db5a080c3aa094d6d50bece2a4"
+    },
+    "icons-flag-6"                   : {
+      "name" : "icons-flag-6",
+      "rule" : ".icons-flag-6",
+      "hash" : "a37b3211517264f5a51c17c50d77a0df"
+    },
+    "icons-flag-6-grey"              : {
+      "name" : "icons-flag-6-grey",
+      "rule" : ".icons-flag-6-grey",
+      "hash" : "4dd3537f6f61a4f857149a5dea413652"
+    },
+    "icons-flag-6-white"             : {
+      "name" : "icons-flag-6-white",
+      "rule" : ".icons-flag-6-white, .device-desktop .phabricator-action-view:hover .icons-flag-6",
+      "hash" : "49a663b600316d73c521687c69ef8bdd"
+    },
+    "icons-flag-7"                   : {
+      "name" : "icons-flag-7",
+      "rule" : ".icons-flag-7",
+      "hash" : "5f4d6d3df81afe0745b75f810fb4be33"
+    },
+    "icons-flag-7-grey"              : {
+      "name" : "icons-flag-7-grey",
+      "rule" : ".icons-flag-7-grey",
+      "hash" : "dc17400b19fe344a664568e51bd4c2c1"
+    },
+    "icons-flag-7-white"             : {
+      "name" : "icons-flag-7-white",
+      "rule" : ".icons-flag-7-white, .device-desktop .phabricator-action-view:hover .icons-flag-7",
+      "hash" : "063e08f676e39c26b33c6cac8ae14e15"
+    },
+    "icons-flag-ghost"               : {
+      "name" : "icons-flag-ghost",
+      "rule" : ".icons-flag-ghost",
+      "hash" : "3152fe67fc364d460d607e338237acf4"
+    },
+    "icons-flag-ghost-grey"          : {
+      "name" : "icons-flag-ghost-grey",
+      "rule" : ".icons-flag-ghost-grey",
+      "hash" : "56c962d3557fee90bcb6216ff9df2b84"
+    },
+    "icons-flag-ghost-white"         : {
+      "name" : "icons-flag-ghost-white",
+      "rule" : ".icons-flag-ghost-white, .device-desktop .phabricator-action-view:hover .icons-flag-ghost",
+      "hash" : "583261ed96dbe3452e3e6a0001aea6d8"
+    },
+    "icons-flag-grey"                : {
+      "name" : "icons-flag-grey",
+      "rule" : ".icons-flag-grey",
+      "hash" : "2abe4ae06cc54bf6069bac446e5fa439"
+    },
+    "icons-flag-white"               : {
+      "name" : "icons-flag-white",
+      "rule" : ".icons-flag-white, .device-desktop .phabricator-action-view:hover .icons-flag",
+      "hash" : "3442002f986cb8f7e1f06183927945a3"
+    },
+    "icons-folder-open"              : {
+      "name" : "icons-folder-open",
+      "rule" : ".icons-folder-open",
+      "hash" : "fa3478ecd57fd41a6a16107db86a15e9"
+    },
+    "icons-folder-open-grey"         : {
+      "name" : "icons-folder-open-grey",
+      "rule" : ".icons-folder-open-grey",
+      "hash" : "dada2fb1cbcb8256f607eae1914219c1"
+    },
+    "icons-folder-open-white"        : {
+      "name" : "icons-folder-open-white",
+      "rule" : ".icons-folder-open-white, .device-desktop .phabricator-action-view:hover .icons-folder-open",
+      "hash" : "af7843feb777d7eafc3904fe0a268ed3"
+    },
+    "icons-fork"                     : {
+      "name" : "icons-fork",
+      "rule" : ".icons-fork",
+      "hash" : "15285571cef4f6251aad47c42e5f0f1c"
+    },
+    "icons-fork-grey"                : {
+      "name" : "icons-fork-grey",
+      "rule" : ".icons-fork-grey",
+      "hash" : "aa875e4018c152bed7b37c776d18660e"
+    },
+    "icons-fork-white"               : {
+      "name" : "icons-fork-white",
+      "rule" : ".icons-fork-white, .device-desktop .phabricator-action-view:hover .icons-fork",
+      "hash" : "a3a53c919c04ae550970ccb5477671d2"
+    },
+    "icons-herald"                   : {
+      "name" : "icons-herald",
+      "rule" : ".icons-herald",
+      "hash" : "4084564ec8592cb6c9bf840f8c7eea6a"
+    },
+    "icons-herald-grey"              : {
+      "name" : "icons-herald-grey",
+      "rule" : ".icons-herald-grey",
+      "hash" : "bc9f0fef0b1f75ed4f20cc4359f706f5"
+    },
+    "icons-herald-white"             : {
+      "name" : "icons-herald-white",
+      "rule" : ".icons-herald-white, .device-desktop .phabricator-action-view:hover .icons-herald",
+      "hash" : "7d773778fa6126ac05a4c6f9d85dd20d"
+    },
+    "icons-highlight"                : {
+      "name" : "icons-highlight",
+      "rule" : ".icons-highlight",
+      "hash" : "25f8142b1c665f623f9eab935bf256ab"
+    },
+    "icons-highlight-grey"           : {
+      "name" : "icons-highlight-grey",
+      "rule" : ".icons-highlight-grey",
+      "hash" : "0d4347b151224476548a0dc43f6d1ceb"
+    },
+    "icons-highlight-white"          : {
+      "name" : "icons-highlight-white",
+      "rule" : ".icons-highlight-white, .device-desktop .phabricator-action-view:hover .icons-highlight",
+      "hash" : "d32f9b42dc24f41aa02c18ba5db5d65f"
+    },
+    "icons-history"                  : {
+      "name" : "icons-history",
+      "rule" : ".icons-history",
+      "hash" : "69fbd6f3875ceef440a5fdd727162024"
+    },
+    "icons-history-grey"             : {
+      "name" : "icons-history-grey",
+      "rule" : ".icons-history-grey",
+      "hash" : "97ed21324d25b236212e33c9bfd4dc0a"
+    },
+    "icons-history-white"            : {
+      "name" : "icons-history-white",
+      "rule" : ".icons-history-white, .device-desktop .phabricator-action-view:hover .icons-history",
+      "hash" : "4ffae3b425eaf5a7aec9757bd9fb97c3"
+    },
+    "icons-image"                    : {
+      "name" : "icons-image",
+      "rule" : ".icons-image",
+      "hash" : "bfe9f9b16bf54a258c76cf314bb87152"
+    },
+    "icons-image-grey"               : {
+      "name" : "icons-image-grey",
+      "rule" : ".icons-image-grey",
+      "hash" : "e11788cab503c91d3a39847165181cb8"
+    },
+    "icons-image-white"              : {
+      "name" : "icons-image-white",
+      "rule" : ".icons-image-white, .device-desktop .phabricator-action-view:hover .icons-image",
+      "hash" : "de395492a2088e998f48cba698744b0f"
+    },
+    "icons-like"                     : {
+      "name" : "icons-like",
+      "rule" : ".icons-like",
+      "hash" : "2afed6b1e26578bcbc23f8d1c72221ab"
+    },
+    "icons-like-grey"                : {
+      "name" : "icons-like-grey",
+      "rule" : ".icons-like-grey",
+      "hash" : "8b2baee6c58e57d61c71d48b7e52522b"
+    },
+    "icons-like-white"               : {
+      "name" : "icons-like-white",
+      "rule" : ".icons-like-white, .device-desktop .phabricator-action-view:hover .icons-like",
+      "hash" : "0b6dd7cb5820d65faefdc2e7a8d75acf"
+    },
+    "icons-link"                     : {
+      "name" : "icons-link",
+      "rule" : ".icons-link",
+      "hash" : "0bb7d22b7db2915c787f132bee42a71d"
+    },
+    "icons-link-grey"                : {
+      "name" : "icons-link-grey",
+      "rule" : ".icons-link-grey",
+      "hash" : "0bfe4298307d9bd2e66a43b5d1ee6c00"
+    },
+    "icons-link-white"               : {
+      "name" : "icons-link-white",
+      "rule" : ".icons-link-white, .device-desktop .phabricator-action-view:hover .icons-link",
+      "hash" : "4cc1d11240276baf1864b9209e28d794"
+    },
+    "icons-lint-info"                : {
+      "name" : "icons-lint-info",
+      "rule" : ".icons-lint-info",
+      "hash" : "f3588606b991614019f2aba3e5d75867"
+    },
+    "icons-lint-info-grey"           : {
+      "name" : "icons-lint-info-grey",
+      "rule" : ".icons-lint-info-grey",
+      "hash" : "738e607d12f91a7a9bc8f9b2c13052b6"
+    },
+    "icons-lint-info-white"          : {
+      "name" : "icons-lint-info-white",
+      "rule" : ".icons-lint-info-white, .device-desktop .phabricator-action-view:hover .icons-lint-info",
+      "hash" : "04d9cd9ec75225136ce19ef447ebbd5a"
+    },
+    "icons-lint-ok"                  : {
+      "name" : "icons-lint-ok",
+      "rule" : ".icons-lint-ok",
+      "hash" : "d2dd1f379b71c38233c33c106867593d"
+    },
+    "icons-lint-ok-grey"             : {
+      "name" : "icons-lint-ok-grey",
+      "rule" : ".icons-lint-ok-grey",
+      "hash" : "e7b4b0ff5593c77ecf8af929960656c1"
+    },
+    "icons-lint-ok-white"            : {
+      "name" : "icons-lint-ok-white",
+      "rule" : ".icons-lint-ok-white, .device-desktop .phabricator-action-view:hover .icons-lint-ok",
+      "hash" : "26661c20c9d68c0568e7f8e7b9a79370"
+    },
+    "icons-lint-warning"             : {
+      "name" : "icons-lint-warning",
+      "rule" : ".icons-lint-warning",
+      "hash" : "30f226154af0794c0e05f53129a7a8fc"
+    },
+    "icons-lint-warning-grey"        : {
+      "name" : "icons-lint-warning-grey",
+      "rule" : ".icons-lint-warning-grey",
+      "hash" : "fef17b967a78fba8c6a4f772fc8c7ab2"
+    },
+    "icons-lint-warning-white"       : {
+      "name" : "icons-lint-warning-white",
+      "rule" : ".icons-lint-warning-white, .device-desktop .phabricator-action-view:hover .icons-lint-warning",
+      "hash" : "acc7c971f83efb5298390bb0ebdbbdb1"
+    },
+    "icons-lock"                     : {
+      "name" : "icons-lock",
+      "rule" : ".icons-lock",
+      "hash" : "d79fe308c2bca2a15eb4f2b0784eaef6"
+    },
+    "icons-lock-grey"                : {
+      "name" : "icons-lock-grey",
+      "rule" : ".icons-lock-grey",
+      "hash" : "ffa7de98cd41e3db7f9ea284662de41e"
+    },
+    "icons-lock-white"               : {
+      "name" : "icons-lock-white",
+      "rule" : ".icons-lock-white, .device-desktop .phabricator-action-view:hover .icons-lock",
+      "hash" : "323f4e1dc1d38b173bbe290c27ec9bea"
+    },
+    "icons-love"                     : {
+      "name" : "icons-love",
+      "rule" : ".icons-love",
+      "hash" : "4b5271c2f7cbf2ae1d904a3cc5f79b09"
+    },
+    "icons-love-grey"                : {
+      "name" : "icons-love-grey",
+      "rule" : ".icons-love-grey",
+      "hash" : "3b629d11a145bc0eb300d9ee8daaacc6"
+    },
+    "icons-love-white"               : {
+      "name" : "icons-love-white",
+      "rule" : ".icons-love-white, .device-desktop .phabricator-action-view:hover .icons-love",
+      "hash" : "25a8f8c240d2fcd12e8ce192c749c9cb"
+    },
+    "icons-merge"                    : {
+      "name" : "icons-merge",
+      "rule" : ".icons-merge",
+      "hash" : "d1465a199273ca5a7d1914b7827388aa"
+    },
+    "icons-merge-grey"               : {
+      "name" : "icons-merge-grey",
+      "rule" : ".icons-merge-grey",
+      "hash" : "b04fa26d964413d9b2efe0354aa22f95"
+    },
+    "icons-merge-white"              : {
+      "name" : "icons-merge-white",
+      "rule" : ".icons-merge-white, .device-desktop .phabricator-action-view:hover .icons-merge",
+      "hash" : "c89d5163d7e237cde54b833356311a1c"
+    },
+    "icons-message"                  : {
+      "name" : "icons-message",
+      "rule" : ".icons-message",
+      "hash" : "b965efb0e7bc88a5f944bfa0476eb652"
+    },
+    "icons-message-grey"             : {
+      "name" : "icons-message-grey",
+      "rule" : ".icons-message-grey",
+      "hash" : "ac4c4a9265d0d4810164907222ff401c"
+    },
+    "icons-message-white"            : {
+      "name" : "icons-message-white",
+      "rule" : ".icons-message-white, .device-desktop .phabricator-action-view:hover .icons-message",
+      "hash" : "7ec19102800f71d08b3d08f31cbbaf02"
+    },
+    "icons-meta-mta"                 : {
+      "name" : "icons-meta-mta",
+      "rule" : ".icons-meta-mta",
+      "hash" : "afbb4a97071268b542634aea2eed9fdb"
+    },
+    "icons-meta-mta-grey"            : {
+      "name" : "icons-meta-mta-grey",
+      "rule" : ".icons-meta-mta-grey",
+      "hash" : "bc939fa46edc09f3e8b31a06cfb18895"
+    },
+    "icons-meta-mta-white"           : {
+      "name" : "icons-meta-mta-white",
+      "rule" : ".icons-meta-mta-white, .device-desktop .phabricator-action-view:hover .icons-meta-mta",
+      "hash" : "e1f6ed22db628d691172d7589004ff8f"
+    },
+    "icons-move"                     : {
+      "name" : "icons-move",
+      "rule" : ".icons-move",
+      "hash" : "5ee19a8116be04fca2cdb2ca18848aaa"
+    },
+    "icons-move-grey"                : {
+      "name" : "icons-move-grey",
+      "rule" : ".icons-move-grey",
+      "hash" : "9f856630044d1d87d689b8d381426391"
+    },
+    "icons-move-white"               : {
+      "name" : "icons-move-white",
+      "rule" : ".icons-move-white, .device-desktop .phabricator-action-view:hover .icons-move",
+      "hash" : "3f81eb8b52850b4910ecf4a8c7667ad5"
+    },
+    "icons-new"                      : {
+      "name" : "icons-new",
+      "rule" : ".icons-new",
+      "hash" : "dfbcbf59a5440d9a99b0c18e2010f58e"
+    },
+    "icons-new-grey"                 : {
+      "name" : "icons-new-grey",
+      "rule" : ".icons-new-grey",
+      "hash" : "fc6c948a0019a8a63e1a36a0c21f60ef"
+    },
+    "icons-new-white"                : {
+      "name" : "icons-new-white",
+      "rule" : ".icons-new-white, .device-desktop .phabricator-action-view:hover .icons-new, .phabricator-application-launch-create:hover .phabricator-application-create-icon.icons-new-grey",
+      "hash" : "99a86e78d0f9bd775e283484b2bba989"
+    },
+    "icons-none"                     : {
+      "name" : "icons-none",
+      "rule" : ".icons-none",
+      "hash" : "29ab47e45ff4d1f23786bf0c1fc20414"
+    },
+    "icons-none-grey"                : {
+      "name" : "icons-none-grey",
+      "rule" : ".icons-none-grey",
+      "hash" : "8d0dec138cc8bbd2da813c24a55ef8f5"
+    },
+    "icons-none-white"               : {
+      "name" : "icons-none-white",
+      "rule" : ".icons-none-white, .device-desktop .phabricator-action-view:hover .icons-none",
+      "hash" : "ee7b57ca9dcc4e87e09fbe2949ec1242"
+    },
+    "icons-perflab"                  : {
+      "name" : "icons-perflab",
+      "rule" : ".icons-perflab",
+      "hash" : "233b376e3b9d43082a60ea54afa6bc18"
+    },
+    "icons-perflab-grey"             : {
+      "name" : "icons-perflab-grey",
+      "rule" : ".icons-perflab-grey",
+      "hash" : "fbd064b66bed85a725cbb4741d0e85b0"
+    },
+    "icons-perflab-white"            : {
+      "name" : "icons-perflab-white",
+      "rule" : ".icons-perflab-white, .device-desktop .phabricator-action-view:hover .icons-perflab",
+      "hash" : "9add2d46ea13b938c631ac2a4f376e3d"
+    },
+    "icons-preview"                  : {
+      "name" : "icons-preview",
+      "rule" : ".icons-preview",
+      "hash" : "2eb136352c63e4f0f7632f81d12d635c"
+    },
+    "icons-preview-grey"             : {
+      "name" : "icons-preview-grey",
+      "rule" : ".icons-preview-grey",
+      "hash" : "f7c4e6ea75fb0a9f2fe00183112db8ad"
+    },
+    "icons-preview-white"            : {
+      "name" : "icons-preview-white",
+      "rule" : ".icons-preview-white, .device-desktop .phabricator-action-view:hover .icons-preview",
+      "hash" : "71cac08ba19ee678499a9cbd5c24c6cf"
+    },
+    "icons-refresh"                  : {
+      "name" : "icons-refresh",
+      "rule" : ".icons-refresh",
+      "hash" : "171e46e974912cfa0b347d1e96a579c7"
+    },
+    "icons-refresh-grey"             : {
+      "name" : "icons-refresh-grey",
+      "rule" : ".icons-refresh-grey",
+      "hash" : "6e102669eb7b6389d7c08c838886841d"
+    },
+    "icons-refresh-white"            : {
+      "name" : "icons-refresh-white",
+      "rule" : ".icons-refresh-white, .device-desktop .phabricator-action-view:hover .icons-refresh",
+      "hash" : "5a7dad6d45f6b47bc1175a7efa4089a1"
+    },
+    "icons-remove"                   : {
+      "name" : "icons-remove",
+      "rule" : ".icons-remove",
+      "hash" : "364176fcff78057741963dbf48eecbbd"
+    },
+    "icons-remove-grey"              : {
+      "name" : "icons-remove-grey",
+      "rule" : ".icons-remove-grey",
+      "hash" : "b0d190ec2837c0cbdc99428178a8eddf"
+    },
+    "icons-remove-white"             : {
+      "name" : "icons-remove-white",
+      "rule" : ".icons-remove-white, .device-desktop .phabricator-action-view:hover .icons-remove",
+      "hash" : "e3646206c14813fca81a35de43722aae"
+    },
+    "icons-search"                   : {
+      "name" : "icons-search",
+      "rule" : ".icons-search",
+      "hash" : "8307439f020b262ab8443edb745ed171"
+    },
+    "icons-search-grey"              : {
+      "name" : "icons-search-grey",
+      "rule" : ".icons-search-grey",
+      "hash" : "c1ce13aab1083b20fb094b56b3deab8a"
+    },
+    "icons-search-white"             : {
+      "name" : "icons-search-white",
+      "rule" : ".icons-search-white, .device-desktop .phabricator-action-view:hover .icons-search",
+      "hash" : "72098d2091e6297c4253c3e45a365ec4"
+    },
+    "icons-start-sandcastle"         : {
+      "name" : "icons-start-sandcastle",
+      "rule" : ".icons-start-sandcastle",
+      "hash" : "afa09dd71e0747c56e64d95e975122c8"
+    },
+    "icons-start-sandcastle-grey"    : {
+      "name" : "icons-start-sandcastle-grey",
+      "rule" : ".icons-start-sandcastle-grey",
+      "hash" : "b0912a9f2a1bcff19ab90f539107864f"
+    },
+    "icons-start-sandcastle-white"   : {
+      "name" : "icons-start-sandcastle-white",
+      "rule" : ".icons-start-sandcastle-white, .device-desktop .phabricator-action-view:hover .icons-start-sandcastle",
+      "hash" : "53692026662afaafdcbaa9ab7de7aa0d"
+    },
+    "icons-subscribe-add"            : {
+      "name" : "icons-subscribe-add",
+      "rule" : ".icons-subscribe-add",
+      "hash" : "d2100e88f2ffc71c2df1d40049f2bf68"
+    },
+    "icons-subscribe-add-grey"       : {
+      "name" : "icons-subscribe-add-grey",
+      "rule" : ".icons-subscribe-add-grey",
+      "hash" : "637094fbed70285b62cbfe9ead4bd480"
+    },
+    "icons-subscribe-add-white"      : {
+      "name" : "icons-subscribe-add-white",
+      "rule" : ".icons-subscribe-add-white, .device-desktop .phabricator-action-view:hover .icons-subscribe-add",
+      "hash" : "75be8cd5e9622834bd6faf0c6d1db271"
+    },
+    "icons-subscribe-auto"           : {
+      "name" : "icons-subscribe-auto",
+      "rule" : ".icons-subscribe-auto",
+      "hash" : "95145b14f35005a0ff3224e3076a9388"
+    },
+    "icons-subscribe-auto-grey"      : {
+      "name" : "icons-subscribe-auto-grey",
+      "rule" : ".icons-subscribe-auto-grey",
+      "hash" : "12edd25560b91838642baa3529743733"
+    },
+    "icons-subscribe-auto-white"     : {
+      "name" : "icons-subscribe-auto-white",
+      "rule" : ".icons-subscribe-auto-white, .device-desktop .phabricator-action-view:hover .icons-subscribe-auto",
+      "hash" : "eda2baeaf056a2d5f46184393ec6dbca"
+    },
+    "icons-subscribe-delete"         : {
+      "name" : "icons-subscribe-delete",
+      "rule" : ".icons-subscribe-delete",
+      "hash" : "55a16e4abd9fe661f350b5327aafed88"
+    },
+    "icons-subscribe-delete-grey"    : {
+      "name" : "icons-subscribe-delete-grey",
+      "rule" : ".icons-subscribe-delete-grey",
+      "hash" : "c1c033955177120cd6adcb0d68f37e18"
+    },
+    "icons-subscribe-delete-white"   : {
+      "name" : "icons-subscribe-delete-white",
+      "rule" : ".icons-subscribe-delete-white, .device-desktop .phabricator-action-view:hover .icons-subscribe-delete",
+      "hash" : "bc0d60756e5b4c141b801fb384933eab"
+    },
+    "icons-tag"                      : {
+      "name" : "icons-tag",
+      "rule" : ".icons-tag",
+      "hash" : "069a8593574d6f847a3611b23677e667"
+    },
+    "icons-tag-grey"                 : {
+      "name" : "icons-tag-grey",
+      "rule" : ".icons-tag-grey",
+      "hash" : "544d96d3bed359a545f2eaa16687cead"
+    },
+    "icons-tag-white"                : {
+      "name" : "icons-tag-white",
+      "rule" : ".icons-tag-white, .device-desktop .phabricator-action-view:hover .icons-tag",
+      "hash" : "e3e509127ef1a452faaa03465dd6f9c1"
+    },
+    "icons-transcript"               : {
+      "name" : "icons-transcript",
+      "rule" : ".icons-transcript",
+      "hash" : "4e76a6b1c51fcfc1b1b1ad0e7f247c3a"
+    },
+    "icons-transcript-grey"          : {
+      "name" : "icons-transcript-grey",
+      "rule" : ".icons-transcript-grey",
+      "hash" : "313af234ca64b2ecc53dd1c91ce0b1c1"
+    },
+    "icons-transcript-white"         : {
+      "name" : "icons-transcript-white",
+      "rule" : ".icons-transcript-white, .device-desktop .phabricator-action-view:hover .icons-transcript",
+      "hash" : "39743a3d055fcd5b344eb59092006f16"
+    },
+    "icons-undo"                     : {
+      "name" : "icons-undo",
+      "rule" : ".icons-undo",
+      "hash" : "7e860a8ec5bb760b0767ecc3114173c7"
+    },
+    "icons-undo-grey"                : {
+      "name" : "icons-undo-grey",
+      "rule" : ".icons-undo-grey",
+      "hash" : "6c9fdd95e53b4ec05da46cf129e3c6fb"
+    },
+    "icons-undo-white"               : {
+      "name" : "icons-undo-white",
+      "rule" : ".icons-undo-white, .device-desktop .phabricator-action-view:hover .icons-undo",
+      "hash" : "8b3fefbad3b5179a6b35b41617e2cef2"
+    },
+    "icons-unlock"                   : {
+      "name" : "icons-unlock",
+      "rule" : ".icons-unlock",
+      "hash" : "e2ff544b4c60dcf7545755d96d23b993"
+    },
+    "icons-unlock-grey"              : {
+      "name" : "icons-unlock-grey",
+      "rule" : ".icons-unlock-grey",
+      "hash" : "d9656d004d5c516a38d75462eadf82f5"
+    },
+    "icons-unlock-white"             : {
+      "name" : "icons-unlock-white",
+      "rule" : ".icons-unlock-white, .device-desktop .phabricator-action-view:hover .icons-unlock",
+      "hash" : "a970eb7a33d2c5c71d2125b0b8e79375"
+    },
+    "icons-unmerge"                  : {
+      "name" : "icons-unmerge",
+      "rule" : ".icons-unmerge",
+      "hash" : "48a0128075a15f5145c343f9fe4fba2e"
+    },
+    "icons-unmerge-grey"             : {
+      "name" : "icons-unmerge-grey",
+      "rule" : ".icons-unmerge-grey",
+      "hash" : "9be17dad18c74a10122def1dabbbf1c4"
+    },
+    "icons-unmerge-white"            : {
+      "name" : "icons-unmerge-white",
+      "rule" : ".icons-unmerge-white, .device-desktop .phabricator-action-view:hover .icons-unmerge",
+      "hash" : "5139f358574dcd0ac5cecf412c8115fd"
+    },
+    "icons-unpublish"                : {
+      "name" : "icons-unpublish",
+      "rule" : ".icons-unpublish",
+      "hash" : "3e6211c213fec14fe152b5fabcb0f306"
+    },
+    "icons-unpublish-grey"           : {
+      "name" : "icons-unpublish-grey",
+      "rule" : ".icons-unpublish-grey",
+      "hash" : "602cdfcfa89b575456aee6eb808accc4"
+    },
+    "icons-unpublish-white"          : {
+      "name" : "icons-unpublish-white",
+      "rule" : ".icons-unpublish-white, .device-desktop .phabricator-action-view:hover .icons-unpublish",
+      "hash" : "b8cde193bf30d834fc90ddfd17fe56ea"
+    },
+    "icons-upload"                   : {
+      "name" : "icons-upload",
+      "rule" : ".icons-upload",
+      "hash" : "e1ab661b790989b38b07eae365343c36"
+    },
+    "icons-upload-grey"              : {
+      "name" : "icons-upload-grey",
+      "rule" : ".icons-upload-grey",
+      "hash" : "f03d83d2e4d3ae10661d430aa4f02523"
+    },
+    "icons-upload-white"             : {
+      "name" : "icons-upload-white",
+      "rule" : ".icons-upload-white, .device-desktop .phabricator-action-view:hover .icons-upload",
+      "hash" : "75a3ea84188c4b4b21aa5a656464a8d0"
+    },
+    "icons-warning"                  : {
+      "name" : "icons-warning",
+      "rule" : ".icons-warning",
+      "hash" : "c1544d80d0bb28d7f9925e5ecda1165f"
+    },
+    "icons-warning-grey"             : {
+      "name" : "icons-warning-grey",
+      "rule" : ".icons-warning-grey",
+      "hash" : "dccb1f52678bf74fc1eaa6a6e8dcae7a"
+    },
+    "icons-warning-white"            : {
+      "name" : "icons-warning-white",
+      "rule" : ".icons-warning-white, .device-desktop .phabricator-action-view:hover .icons-warning",
+      "hash" : "57aadd4cf33bf6cb6464d243cd3e5f4d"
+    },
+    "icons-world"                    : {
+      "name" : "icons-world",
+      "rule" : ".icons-world",
+      "hash" : "374749ade70638672595b8a985341a34"
+    },
+    "icons-world-grey"               : {
+      "name" : "icons-world-grey",
+      "rule" : ".icons-world-grey",
+      "hash" : "f5fa565f8dbc81d5ac8d8f128179929b"
+    },
+    "icons-world-white"              : {
+      "name" : "icons-world-white",
+      "rule" : ".icons-world-white, .device-desktop .phabricator-action-view:hover .icons-world",
+      "hash" : "b50f9d742377edf4edda3e1e78f1e558"
+    },
+    "remarkup-assist-text_b"         : {
+      "name" : "remarkup-assist-text_b",
+      "rule" : ".remarkup-assist-b",
+      "hash" : "12c565d4934f6a777c9524baf75cebb6"
+    },
+    "remarkup-assist-text_chaos"     : {
+      "name" : "remarkup-assist-text_chaos",
+      "rule" : ".remarkup-assist-chaos",
+      "hash" : "970014bac5ad05a98e5d89eaa2775bc0"
+    },
+    "remarkup-assist-text_chaos_off" : {
+      "name" : "remarkup-assist-text_chaos_off",
+      "rule" : ".remarkup-control-chaos-mode .remarkup-assist-chaos",
+      "hash" : "6aba69818e88ff220e774271e2d710b4"
+    },
+    "remarkup-assist-text_code"      : {
+      "name" : "remarkup-assist-text_code",
+      "rule" : ".remarkup-assist-code",
+      "hash" : "f06f106cb8edb67e8b99d159d704a61a"
+    },
+    "remarkup-assist-text_help"      : {
+      "name" : "remarkup-assist-text_help",
+      "rule" : ".remarkup-assist-help",
+      "hash" : "9d54d8224b81de8e3ed7beac0e486257"
+    },
+    "remarkup-assist-text_i"         : {
+      "name" : "remarkup-assist-text_i",
+      "rule" : ".remarkup-assist-i",
+      "hash" : "50f83a53f5b094d3d92b619d06fada3c"
+    },
+    "remarkup-assist-text_image"     : {
+      "name" : "remarkup-assist-text_image",
+      "rule" : ".remarkup-assist-image",
+      "hash" : "c2869e71cc7cb6178598cd41a19ababb"
+    },
+    "remarkup-assist-text_larger"    : {
+      "name" : "remarkup-assist-text_larger",
+      "rule" : ".remarkup-assist-larger",
+      "hash" : "d3165f15a1b3734e4b7088f7b74330ba"
+    },
+    "remarkup-assist-text_meme"      : {
+      "name" : "remarkup-assist-text_meme",
+      "rule" : ".remarkup-assist-meme",
+      "hash" : "ed9c4166858ca1caedf5f8e4b8ad587e"
+    },
+    "remarkup-assist-text_ol"        : {
+      "name" : "remarkup-assist-text_ol",
+      "rule" : ".remarkup-assist-ol",
+      "hash" : "266b858f5ffc42760fb2e12913a5198a"
+    },
+    "remarkup-assist-text_order"     : {
+      "name" : "remarkup-assist-text_order",
+      "rule" : ".remarkup-assist-order",
+      "hash" : "aed1511443ff24dcbca27ac4624dee66"
+    },
+    "remarkup-assist-text_order_off" : {
+      "name" : "remarkup-assist-text_order_off",
+      "rule" : ".remarkup-control-order-mode .remarkup-assist-order",
+      "hash" : "bf78a7f49efcc295db550dd665d55a00"
+    },
+    "remarkup-assist-text_table"     : {
+      "name" : "remarkup-assist-text_table",
+      "rule" : ".remarkup-assist-table",
+      "hash" : "5c2961b35460b3b5b7efdd5bc4e318ca"
+    },
+    "remarkup-assist-text_tag"       : {
+      "name" : "remarkup-assist-text_tag",
+      "rule" : ".remarkup-assist-tag",
+      "hash" : "165bd3a4de8d54cf720db9bc64116d25"
+    },
+    "remarkup-assist-text_tt"        : {
+      "name" : "remarkup-assist-text_tt",
+      "rule" : ".remarkup-assist-tt",
+      "hash" : "c07e6816500c9cd66fa27758cc902195"
+    },
+    "remarkup-assist-text_ul"        : {
+      "name" : "remarkup-assist-text_ul",
+      "rule" : ".remarkup-assist-ul",
+      "hash" : "26f55c0fcf9148879e3fb058ac319100"
+    }
+  },
+  "scales"  : [
+    1,
+    2
+  ],
+  "header"  : "\/**\n * @provides sprite-icons-css\n * @generated\n *\/\n\n.sprite-icons {\n  background-image: url(\/rsrc\/image\/sprite-icons.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-icons {\n    background-image: url(\/rsrc\/image\/sprite-icons-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
+  "type"    : "standard"
+}
diff --git a/resources/sprite/manifest/menu.json b/resources/sprite/manifest/menu.json
index 336629731a..a63869de7b 100644
--- a/resources/sprite/manifest/menu.json
+++ b/resources/sprite/manifest/menu.json
@@ -1,71 +1,71 @@
 {
   "version" : 1,
   "sprites" : {
     "app"              : {
       "name" : "app",
       "rule" : ".menu-icon-app",
-      "hash" : "14cd042732abba487dc9c4135d65f2c5"
+      "hash" : "82d277c1d6da6786cd03db3adcb843cd"
     },
     "app_blue"         : {
       "name" : "app_blue",
       "rule" : ".menu-icon-app-blue",
-      "hash" : "5f9926e52a4e6fd43fc5fdd0cc5c8053"
+      "hash" : "ee9922d71c4cf12635254872c861379d"
     },
     "arrow-right"      : {
       "name" : "arrow-right",
       "rule" : ".phabricator-crumb-divider",
-      "hash" : "50180da0aed206c9db2bc1547c1a158c"
+      "hash" : "a994209450dc73a80841cdd66bb59925"
     },
     "conf-hover"       : {
       "name" : "conf-hover",
       "rule" : ".alert-notifications:hover .phabricator-main-menu-message-icon",
-      "hash" : "bcb2938e45f5e908173b47d761f165c6"
+      "hash" : "110e09706f34bb967f925c1bc831a723"
     },
     "conf-off"         : {
       "name" : "conf-off",
       "rule" : ".alert-notifications .phabricator-main-menu-message-icon",
-      "hash" : "04cb75c44b245567a60e2de98aa1bff4"
+      "hash" : "2af87b0a5d0d3b3991e5358c36a611d9"
     },
     "conf-unseen"      : {
       "name" : "conf-unseen",
       "rule" : ".alert-notifications.message-unread .phabricator-main-menu-message-icon",
-      "hash" : "85d603ae4a9b8004944c6cf59da98b7d"
+      "hash" : "9eda01b1f1789934f307c72b9c14f413"
     },
     "logo"             : {
       "name" : "logo",
       "rule" : ".phabricator-main-menu-logo-image",
-      "hash" : "6eadea2c3dd2ada989eba22b6769b3eb"
+      "hash" : "c6c7ab165dce13a51ef329928c7c4aba"
     },
     "search"           : {
       "name" : "search",
       "rule" : ".menu-icon-search",
-      "hash" : "26fa1f6646d20e159bb5ed5bd125a3b9"
+      "hash" : "71b7bf0fb6a8ea0a50fe39b4499bf456"
     },
     "search_blue"      : {
       "name" : "search_blue",
       "rule" : ".menu-icon-search-blue",
-      "hash" : "8ddecd3b988a3ec69c2116bfd65959cb"
+      "hash" : "248d24bc446c7d51dfd07d0f4a421409"
     },
     "seen_have_unread" : {
       "name" : "seen_have_unread",
       "rule" : ".alert-notifications:hover .phabricator-main-menu-alert-icon",
-      "hash" : "5ff174bbf7ea9721b6e6fe8bbd11a3b2"
+      "hash" : "4d95837845ddbef86405610effce7213"
     },
     "seen_read_all"    : {
       "name" : "seen_read_all",
       "rule" : ".alert-notifications .phabricator-main-menu-alert-icon",
-      "hash" : "3685584b5ccac8f39acbd912b111d081"
+      "hash" : "ff3bfbbb0a3fa0d7a5bcfa897ae19e90"
     },
     "unseen_any"       : {
       "name" : "unseen_any",
       "rule" : ".alert-notifications.alert-unread .phabricator-main-menu-alert-icon",
-      "hash" : "5a3f8047aa4d813b9b1f4877c68f1626"
+      "hash" : "d708d816883fdfc849df8eecf92650c0"
     }
   },
   "scales"  : [
     1,
     2
   ],
   "header"  : "\/**\n * @provides sprite-menu-css\n * @generated\n *\/\n\n.sprite-menu {\n  background-image: url(\/rsrc\/image\/sprite-menu.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-menu {\n    background-image: url(\/rsrc\/image\/sprite-menu-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/minicons.json b/resources/sprite/manifest/minicons.json
index 2ffd2d5196..8f622fe7b7 100644
--- a/resources/sprite/manifest/minicons.json
+++ b/resources/sprite/manifest/minicons.json
@@ -1,51 +1,51 @@
 {
   "version" : 1,
   "sprites" : {
     "minicons-company-dark"     : {
       "name" : "minicons-company-dark",
       "rule" : ".minicons-company-dark",
-      "hash" : "7787a1c5ccdd0f94faa795db6b382901"
+      "hash" : "efc3dd9db2f9aa3c4b2c90b2930d0523"
     },
     "minicons-company-white"    : {
       "name" : "minicons-company-white",
       "rule" : ".minicons-company-white",
-      "hash" : "181289eba2fcb851858ab5b99fd19818"
+      "hash" : "5f5f9a7f23c088171234c4fc815eb94c"
     },
     "minicons-move-dark"        : {
       "name" : "minicons-move-dark",
       "rule" : ".minicons-move-dark",
-      "hash" : "d87f5f972885ad2653d92675b4e3855c"
+      "hash" : "181a840106735e48dcb475498caed9be"
     },
     "minicons-move-white"       : {
       "name" : "minicons-move-white",
       "rule" : ".minicons-move-white",
-      "hash" : "620e464c0e50830b90eaed3b5a2b9f56"
+      "hash" : "f76fb8f509d9d3ff4892a49c8346642b"
     },
     "minicons-public-dark"      : {
       "name" : "minicons-public-dark",
       "rule" : ".minicons-public-dark",
-      "hash" : "12bdec3c0e273f820aaef70f61128f4b"
+      "hash" : "122c5e3b2d6d528f9bb2397f80dac3d2"
     },
     "minicons-public-white"     : {
       "name" : "minicons-public-white",
       "rule" : ".minicons-public-white",
-      "hash" : "c075363aeba4c52dbcc328a24d8f4298"
+      "hash" : "8eb9e659a2d1c2b3551e1deaeb7b2525"
     },
     "minicons-restricted-dark"  : {
       "name" : "minicons-restricted-dark",
       "rule" : ".minicons-restricted-dark",
-      "hash" : "7a1d926f7af98bef3b17a913e1d0b5b3"
+      "hash" : "45f1ef1316a184dfaaacdbdfb6097246"
     },
     "minicons-restricted-white" : {
       "name" : "minicons-restricted-white",
       "rule" : ".minicons-restricted-white",
-      "hash" : "af00df15815b83d410073859dacf7a75"
+      "hash" : "bf739af8043b30551fc5812e8352e366"
     }
   },
   "scales"  : [
     1,
     2
   ],
   "header"  : "\/**\n * @provides sprite-minicons-css\n * @generated\n *\/\n\n.sprite-minicons {\n  background-image: url(\/rsrc\/image\/sprite-minicons.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-minicons {\n    background-image: url(\/rsrc\/image\/sprite-minicons-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/payments.json b/resources/sprite/manifest/payments.json
index 29f40c7b1e..ab31f4d2a4 100644
--- a/resources/sprite/manifest/payments.json
+++ b/resources/sprite/manifest/payments.json
@@ -1,45 +1,45 @@
 {
   "version" : 1,
   "sprites" : {
     "payments-americanexpress" : {
       "name" : "payments-americanexpress",
       "rule" : ".payments-americanexpress",
-      "hash" : "ace986273a0bae308c4018e02cdd60f2"
+      "hash" : "3d3e8cedd420ac5dd6adfbb046676efc"
     },
     "payments-discover"        : {
       "name" : "payments-discover",
       "rule" : ".payments-discover",
-      "hash" : "0b60e5e4c25e0d3bf2c3cb780d7eaf00"
+      "hash" : "f38b962de12444ae90236d34630bfe7d"
     },
     "payments-googlecheckout"  : {
       "name" : "payments-googlecheckout",
       "rule" : ".payments-googlecheckout",
-      "hash" : "1f00e015545898e059ca09fa49b239e7"
+      "hash" : "e183de08a0b7d8ce7577ea936e2137fd"
     },
     "payments-mastercard"      : {
       "name" : "payments-mastercard",
       "rule" : ".payments-mastercard",
-      "hash" : "49a742b837610f7b37b565ba4899c95c"
+      "hash" : "b428e5a6b08c4490d2cc0443fbe8596a"
     },
     "payments-paypal"          : {
       "name" : "payments-paypal",
       "rule" : ".payments-paypal",
-      "hash" : "5664cf7acd9fe65d60e1449a33f56ce2"
+      "hash" : "bb4be31630d12980e0b3156789ed2849"
     },
     "payments-visa"            : {
       "name" : "payments-visa",
       "rule" : ".payments-visa",
-      "hash" : "ff2ffac55927dbe7a1bf02fdfac561ea"
+      "hash" : "cbbcf0054d92e125deaa3048a190ddeb"
     },
     "payments-worldpay"        : {
       "name" : "payments-worldpay",
       "rule" : ".payments-worldpay",
-      "hash" : "acc037ffa26f6caccf290006e39ba1fc"
+      "hash" : "db2d09a263e8f7260443aaada48c6f80"
     }
   },
   "scales"  : [
     1
   ],
   "header"  : "\/**\n * @provides sprite-payments-css\n * @generated\n *\/\n\n.sprite-payments {\n  background-image: url(\/rsrc\/image\/sprite-payments.png);\n  background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n  .sprite-payments {\n    background-image: url(\/rsrc\/image\/sprite-payments-X2.png);\n    background-size: {X}px {Y}px;\n  }\n}\n",
   "type"    : "standard"
 }
diff --git a/resources/sprite/manifest/tokens.json b/resources/sprite/manifest/tokens.json
index 11d0983c66..8eaf6dee37 100644
--- a/resources/sprite/manifest/tokens.json
+++ b/resources/sprite/manifest/tokens.json
@@ -1,90 +1,90 @@
 {
   "version" : 1,
   "sprites" : {
     "tokens-coin-1"  : {
       "name" : "tokens-coin-1",
       "rule" : ".tokens-coin-1",
-      "hash" : "5e1fa22d5ef7f2d8ea14839c303315bb"
+      "hash" : "124174168031b47dfd98273d2d6f369a"
     },
     "tokens-coin-2"  : {
       "name" : "tokens-coin-2",
       "rule" : ".tokens-coin-2",
-      "hash" : "6a6ef9f8730e5919fa16669258ecb74d"
+      "hash" : "a4811c8387caec31e4a313b32abe7026"
     },
     "tokens-coin-3"  : {
       "name" : "tokens-coin-3",
       "rule" : ".tokens-coin-3",
-      "hash" : "97256d9133c6aaf965925218d846cc32"
+      "hash" : "0ecd0e9e5cce27e059a68ceb80e57e3b"
     },
     "tokens-coin-4"  : {
       "name" : "tokens-coin-4",
       "rule" : ".tokens-coin-4",
-      "hash" : "51cb98e751ad6f7f6d30d0acbe3bfc7c"
+      "hash" : "d88e727312274f4bd534ee5314fba833"
     },
     "tokens-heart-1" : {
       "name" : "tokens-heart-1",
       "rule" : ".tokens-heart-1",
-      "hash" : "eacfe71d6ede3f994223a02e875135b2"
+      "hash" : "433df7ae11d6651a1f5d6f1c94a85c98"
     },
     "tokens-heart-2" : {
       "name" : "tokens-heart-2",
       "rule" : ".tokens-heart-2",
-      "hash" : "4745a935630e1b049e63c93e88667867"
+      "hash" : "d582a288d9da8685f61a392aa2e288e5"
     },
     "tokens-like-1"  : {
       "name" : "tokens-like-1",
       "rule" : ".tokens-like-1",
-      "hash" : "6e38278e6653c03135157d2865907722"
+      "hash" : "1b1fd7b15d0ee5eb95371f7ff673025b"
     },
     "tokens-like-2"  : {
       "name" : "tokens-like-2",
       "rule" : ".tokens-like-2",
-      "hash" : "fb47711ebbc21515cfd6fab3a19d8c7a"
+      "hash" : "2ea96cf3f0f43c9efda61a3430a49d90"
     },
     "tokens-medal-1" : {
       "name" : "tokens-medal-1",
       "rule" : ".tokens-medal-1",
-      "hash" : "979c6f8b7dad182e912a0d67b44595c2"
+      "hash" : "081e1d0e2092b8035e6d1ba1181d000e"
     },
     "tokens-medal-2" : {
       "name" : "tokens-medal-2",
       "rule" : ".tokens-medal-2",
-      "hash" : "2263fc36370d88bceb620128902a51ae"
+      "hash" : "958e386989d555a9a8b86bf16ce89cb6"
     },
     "tokens-medal-3" : {
       "name" : "tokens-medal-3",
       "rule" : ".tokens-medal-3",
-      "hash" : "95a83057cbd9ebb7ca2f1f082c72ddac"
+      "hash" : "da3459e708a19b4ee8bc1464fb2b4423"
     },
     "tokens-medal-4" : {
       "name" : "tokens-medal-4",
       "rule" : ".tokens-medal-4",
-      "hash" : "c8c94dd2f0e8a2a8711f1f21be61ea3b"
+      "hash" : "84ac1a2000629dd0399f8083c4fa882b"
     },
     "tokens-misc-1"  : {
       "name" : "tokens-misc-1",
       "rule" : ".tokens-misc-1",
-      "hash" : "d16df367d29e0aedabcfb11c672ebd8c"
+      "hash" : "fc021cdb987939a90c101691c9270736"
     },
     "tokens-misc-2"  : {
       "name" : "tokens-misc-2",
       "rule" : ".tokens-misc-2",
-      "hash" : "74d971c084b2f7665a84c61c0846446c"
+      "hash" : "cdb68aa37c891238c083dab250ea40b7"
     },
     "tokens-misc-3"  : {
       "name" : "tokens-misc-3",
       "rule" : ".tokens-misc-3",
-      "hash" : "c91387778404c8e88f243477d056d985"
+      "hash" : "0596b11b19dcdf20e7fb2a38e9f6c704"
     },
     "tokens-misc-4"  : {
       "name" : "tokens-misc-4",
       "rule" : ".tokens-misc-4",
-      "hash" : "4705e7c79906180c04286a62d375f33b"
+      "hash" : "45f756d650ee729d3593b5afb3351611"
     }
   },
   "scales"  : [
     1
   ],
   "header"  : "\/**\n * @provides sprite-tokens-css\n * @generated\n *\/\n\n.sprite-tokens {\n  background-image: url(\/rsrc\/image\/sprite-tokens.png);\n  background-repeat: no-repeat;\n}\n\n\n",
   "type"    : "standard"
 }
diff --git a/scripts/celerity/generate_sprites.php b/scripts/celerity/generate_sprites.php
index 911fb5d761..4d2b05f301 100755
--- a/scripts/celerity/generate_sprites.php
+++ b/scripts/celerity/generate_sprites.php
@@ -1,86 +1,86 @@
 #!/usr/bin/env php
 <?php
 
 require_once dirname(dirname(__FILE__)).'/__init_script__.php';
 
 $args = new PhutilArgumentParser($argv);
 $args->setTagline('regenerate CSS sprite sheets');
 $args->setSynopsis(<<<EOHELP
 **sprites**
     Rebuild CSS sprite sheets.
 
 EOHELP
 );
 $args->parseStandardArguments();
 $args->parse(
   array(
     array(
       'name'  => 'force',
       'help'  => 'Force regeneration even if sources have not changed.',
     ),
   ));
 
 $root = dirname(phutil_get_library_root('phabricator'));
 $webroot = $root.'/webroot/rsrc';
 $webroot = Filesystem::readablePath($webroot);
 
 $generator = new CeleritySpriteGenerator();
 
 $sheets = array(
-  'icon' => $generator->buildIconSheet(),
+  'icons' => $generator->buildIconSheet(),
   'menu' => $generator->buildMenuSheet(),
   'apps' => $generator->buildAppsSheet(),
   'actions' => $generator->buildActionsSheet(),
   'minicons' => $generator->buildMiniconsSheet(),
   'conpherence' => $generator->buildConpherenceSheet(),
   'apps-large' => $generator->buildAppsLargeSheet(),
   'payments' => $generator->buildPaymentsSheet(),
   'tokens' => $generator->buildTokenSheet(),
   'docs' => $generator->buildDocsSheet(),
   'gradient' => $generator->buildGradientSheet(),
 );
 
 list($err) = exec_manual('optipng');
 if ($err) {
   $have_optipng = false;
   echo phutil_console_format(
     "<bg:red> WARNING </bg> `optipng` not found in PATH.\n".
     "Sprites will not be optimized! Install `optipng`!\n");
 } else {
   $have_optipng = true;
 }
 
 foreach ($sheets as $name => $sheet) {
   $manifest_path = $root.'/resources/sprite/manifest/'.$name.'.json';
   if (!$args->getArg('force')) {
     if (Filesystem::pathExists($manifest_path)) {
       $data = Filesystem::readFile($manifest_path);
       $data = json_decode($data, true);
       if (!$sheet->needsRegeneration($data)) {
         continue;
       }
     }
   }
 
   $sheet
     ->generateCSS($webroot."/css/sprite-{$name}.css")
     ->generateManifest($root."/resources/sprite/manifest/{$name}.json");
 
   foreach ($sheet->getScales() as $scale) {
     if ($scale == 1) {
       $sheet_name = "sprite-{$name}.png";
     } else {
       $sheet_name = "sprite-{$name}-X{$scale}.png";
     }
 
     $full_path = "{$webroot}/image/{$sheet_name}";
     $sheet->generateImage($full_path, $scale);
 
     if ($have_optipng) {
       echo "Optimizing...\n";
       phutil_passthru('optipng -o7 -clobber %s', $full_path);
     }
   }
 }
 
 echo "Done.\n";
diff --git a/scripts/celerity_mapper.php b/scripts/celerity_mapper.php
index 1a28baea89..d285330c29 100755
--- a/scripts/celerity_mapper.php
+++ b/scripts/celerity_mapper.php
@@ -1,404 +1,404 @@
 #!/usr/bin/env php
 <?php
 
 $package_spec = array(
   'javelin.pkg.js' => array(
     'javelin-util',
     'javelin-install',
     'javelin-event',
     'javelin-stratcom',
     'javelin-behavior',
     'javelin-resource',
     'javelin-request',
     'javelin-vector',
     'javelin-dom',
     'javelin-json',
     'javelin-uri',
     'javelin-workflow',
     'javelin-mask',
     'javelin-typeahead',
     'javelin-typeahead-normalizer',
     'javelin-typeahead-source',
     'javelin-typeahead-preloaded-source',
     'javelin-typeahead-ondemand-source',
     'javelin-tokenizer',
   ),
   'core.pkg.js' => array(
     'javelin-behavior-aphront-basic-tokenizer',
     'javelin-behavior-workflow',
     'javelin-behavior-aphront-form-disable-on-submit',
     'phabricator-keyboard-shortcut-manager',
     'phabricator-keyboard-shortcut',
     'javelin-behavior-phabricator-keyboard-shortcuts',
     'javelin-behavior-refresh-csrf',
     'javelin-behavior-phabricator-watch-anchor',
     'javelin-behavior-phabricator-autofocus',
     'phabricator-menu-item',
     'phabricator-dropdown-menu',
     'phabricator-phtize',
     'javelin-behavior-phabricator-oncopy',
     'phabricator-tooltip',
     'javelin-behavior-phabricator-tooltips',
     'phabricator-prefab',
     'javelin-behavior-device',
     'javelin-behavior-toggle-class',
     'javelin-behavior-lightbox-attachments',
     'phabricator-busy',
     'javelin-aphlict',
     'phabricator-notification',
     'javelin-behavior-aphlict-listen',
     'javelin-behavior-phabricator-search-typeahead',
     'javelin-behavior-konami',
     'javelin-behavior-aphlict-dropdown',
     'javelin-behavior-history-install',
     'javelin-behavior-phabricator-gesture',
 
     'javelin-behavior-phabricator-active-nav',
     'javelin-behavior-phabricator-nav',
     'javelin-behavior-phabricator-remarkup-assist',
     'phabricator-textareautils',
     'phabricator-file-upload',
     'javelin-behavior-global-drag-and-drop',
     'javelin-behavior-phabricator-reveal-content',
   ),
   'core.pkg.css' => array(
     'phabricator-core-css',
     'phabricator-zindex-css',
     'phabricator-core-buttons-css',
     'phabricator-standard-page-view',
     'aphront-dialog-view-css',
     'aphront-form-view-css',
     'aphront-panel-view-css',
     'aphront-table-view-css',
     'aphront-tokenizer-control-css',
     'aphront-typeahead-control-css',
     'aphront-list-filter-view-css',
 
     'phabricator-directory-css',
     'phabricator-jump-nav',
 
     'phabricator-remarkup-css',
     'syntax-highlighting-css',
     'aphront-pager-view-css',
     'phabricator-transaction-view-css',
     'aphront-tooltip-css',
     'phabricator-flag-css',
     'aphront-error-view-css',
 
-    'sprite-icon-css',
+    'sprite-icons-css',
     'sprite-gradient-css',
     'sprite-menu-css',
     'sprite-apps-large-css',
 
     'phabricator-main-menu-view',
     'phabricator-notification-css',
     'phabricator-notification-menu-css',
     'lightbox-attachment-css',
     'phabricator-header-view-css',
     'phabricator-form-view-css',
     'phabricator-filetree-view-css',
     'phabricator-nav-view-css',
     'phabricator-side-menu-view-css',
     'phabricator-crumbs-view-css',
     'phabricator-object-item-list-view-css',
     'global-drag-and-drop-css',
 
   ),
   'differential.pkg.css' => array(
     'differential-core-view-css',
     'differential-changeset-view-css',
     'differential-results-table-css',
     'differential-revision-history-css',
     'differential-revision-list-css',
     'differential-table-of-contents-css',
     'differential-revision-comment-css',
     'differential-revision-add-comment-css',
     'differential-revision-comment-list-css',
     'phabricator-object-selector-css',
     'phabricator-content-source-view-css',
     'differential-local-commits-view-css',
     'inline-comment-summary-css',
   ),
   'differential.pkg.js' => array(
     'phabricator-drag-and-drop-file-upload',
     'phabricator-shaped-request',
 
     'javelin-behavior-differential-feedback-preview',
     'javelin-behavior-differential-edit-inline-comments',
     'javelin-behavior-differential-populate',
     'javelin-behavior-differential-show-more',
     'javelin-behavior-differential-diff-radios',
     'javelin-behavior-differential-accept-with-errors',
     'javelin-behavior-differential-comment-jump',
     'javelin-behavior-differential-add-reviewers-and-ccs',
     'javelin-behavior-differential-keyboard-navigation',
     'javelin-behavior-aphront-drag-and-drop',
     'javelin-behavior-aphront-drag-and-drop-textarea',
     'javelin-behavior-phabricator-object-selector',
     'javelin-behavior-repository-crossreference',
     'javelin-behavior-load-blame',
 
     'differential-inline-comment-editor',
     'javelin-behavior-differential-dropdown-menus',
     'javelin-behavior-differential-toggle-files',
     'javelin-behavior-differential-user-select',
   ),
   'diffusion.pkg.css' => array(
     'diffusion-commit-view-css',
     'diffusion-icons-css',
   ),
   'diffusion.pkg.js' => array(
     'javelin-behavior-diffusion-pull-lastmodified',
     'javelin-behavior-diffusion-commit-graph',
     'javelin-behavior-audit-preview',
   ),
   'maniphest.pkg.css' => array(
     'maniphest-task-summary-css',
     'maniphest-transaction-detail-css',
     'aphront-attached-file-view-css',
     'phabricator-project-tag-css',
   ),
   'maniphest.pkg.js' => array(
     'javelin-behavior-maniphest-batch-selector',
     'javelin-behavior-maniphest-transaction-controls',
     'javelin-behavior-maniphest-transaction-preview',
     'javelin-behavior-maniphest-transaction-expand',
     'javelin-behavior-maniphest-subpriority-editor',
   ),
   'darkconsole.pkg.js' => array(
     'javelin-behavior-dark-console',
     'javelin-behavior-error-log',
   ),
 );
 
 
 require_once dirname(__FILE__).'/__init_script__.php';
 
 $args = new PhutilArgumentParser($argv);
 $args->setTagline('map static resources');
 $args->setSynopsis(
   "**celerity_mapper.php** [--output __path__] [--with-custom] <webroot>");
 $args->parse(
   array(
     array(
       'name'     => 'output',
       'param'    => 'path',
       'default'  => '../src/__celerity_resource_map__.php',
       'help'     => "Set the path for resource map. It is usually useful for ".
                     "'celerity.resource-path' configuration.",
     ),
     array(
       'name'     => 'with-custom',
       'help'     => 'Include resources in <webroot>/rsrc/custom/.',
     ),
     array(
       'name'     => 'webroot',
       'wildcard' => true,
     ),
   ));
 
 $root = $args->getArg('webroot');
 if (count($root) != 1 || !is_dir(reset($root))) {
   $args->printHelpAndExit();
 }
 $root = Filesystem::resolvePath(reset($root));
 
 $celerity_path = Filesystem::resolvePath($args->getArg('output'), $root);
 $with_custom = $args->getArg('with-custom');
 
 $resource_hash = PhabricatorEnv::getEnvConfig('celerity.resource-hash');
 $runtime_map = array();
 
 echo "Finding raw static resources...\n";
 $finder = id(new FileFinder($root))
   ->withType('f')
   ->withSuffix('png')
   ->withSuffix('jpg')
   ->withSuffix('gif')
   ->withSuffix('swf')
   ->withFollowSymlinks(true)
   ->setGenerateChecksums(true);
 if (!$with_custom) {
   $finder->excludePath('./rsrc/custom');
 }
 $raw_files = $finder->find();
 
 echo "Processing ".count($raw_files)." files";
 foreach ($raw_files as $path => $hash) {
   echo ".";
   $path = '/'.Filesystem::readablePath($path, $root);
   $type = CelerityResourceTransformer::getResourceType($path);
 
   $hash = md5($hash.$path.$resource_hash);
   $uri  = '/res/'.substr($hash, 0, 8).$path;
 
   $runtime_map[$path] = array(
     'hash' => $hash,
     'uri'  => $uri,
     'disk' => $path,
     'type' => $type,
   );
 }
 echo "\n";
 
 $xformer = id(new CelerityResourceTransformer())
   ->setMinify(false)
   ->setRawResourceMap($runtime_map);
 
 echo "Finding transformable static resources...\n";
 $finder = id(new FileFinder($root))
   ->withType('f')
   ->withSuffix('js')
   ->withSuffix('css')
   ->withFollowSymlinks(true)
   ->setGenerateChecksums(true);
 if (!$with_custom) {
   $finder->excludePath('./rsrc/custom');
 }
 $files = $finder->find();
 
 echo "Processing ".count($files)." files";
 
 $file_map = array();
 foreach ($files as $path => $raw_hash) {
   echo ".";
   $path = '/'.Filesystem::readablePath($path, $root);
   $data = Filesystem::readFile($root.$path);
 
   $data = $xformer->transformResource($path, $data);
   $hash = md5($data);
   $hash = md5($hash.$path.$resource_hash);
 
   $file_map[$path] = array(
     'hash' => $hash,
     'disk' => $path,
   );
 }
 echo "\n";
 
 $resource_graph = array();
 $hash_map = array();
 
 $parser = new PhutilDocblockParser();
 foreach ($file_map as $path => $info) {
   $type = CelerityResourceTransformer::getResourceType($path);
 
   $data = Filesystem::readFile($root.$info['disk']);
   $matches = array();
   $ok = preg_match('@/[*][*].*?[*]/@s', $data, $matches);
   if (!$ok) {
     throw new Exception(
       "File {$path} does not have a header doc comment. Encode dependency ".
       "data in a header docblock.");
   }
 
   list($description, $metadata) = $parser->parse($matches[0]);
 
   $provides = preg_split('/\s+/', trim(idx($metadata, 'provides')));
   $requires = preg_split('/\s+/', trim(idx($metadata, 'requires')));
   $provides = array_filter($provides);
   $requires = array_filter($requires);
 
   if (!$provides) {
     // Tests and documentation-only JS is permitted to @provide no targets.
     continue;
   }
 
   if (count($provides) > 1) {
     throw new Exception(
       "File {$path} must @provide at most one Celerity target.");
   }
 
   $provides = reset($provides);
 
   $uri = '/res/'.substr($info['hash'], 0, 8).$path;
 
   $hash_map[$provides] = $info['hash'];
 
   $resource_graph[$provides] = $requires;
 
   $runtime_map[$provides] = array(
     'uri'       => $uri,
     'type'      => $type,
     'requires'  => $requires,
     'disk'      => $path,
   );
 }
 
 $celerity_resource_graph = new CelerityResourceGraph();
 $celerity_resource_graph->addNodes($resource_graph);
 $celerity_resource_graph->setResourceGraph($resource_graph);
 $celerity_resource_graph->loadGraph();
 
 foreach ($resource_graph as $provides => $requires) {
   $cycle = $celerity_resource_graph->detectCycles($provides);
   if ($cycle) {
     throw new Exception(
       "Cycle detected in resource graph: ". implode($cycle, " => ")
     );
   }
 }
 
 $package_map = array();
 foreach ($package_spec as $name => $package) {
   $hashes = array();
   $type = null;
   foreach ($package as $symbol) {
     if (empty($hash_map[$symbol])) {
       throw new Exception(
         "Package specification for '{$name}' includes '{$symbol}', but that ".
         "symbol is not defined anywhere.");
     }
     if ($type === null) {
       $type = $runtime_map[$symbol]['type'];
     } else {
       $ntype = $runtime_map[$symbol]['type'];
       if ($type !== $ntype) {
         throw new Exception(
           "Package specification for '{$name}' mixes resources of type ".
           "'{$type}' with resources of type '{$ntype}'. Each package may only ".
           "contain one type of resource.");
       }
     }
     $hashes[] = $symbol.':'.$hash_map[$symbol];
   }
   $key = substr(md5(implode("\n", $hashes)), 0, 8);
   $package_map['packages'][$key] = array(
     'name'    => $name,
     'symbols' => $package,
     'uri'     => '/res/pkg/'.$key.'/'.$name,
     'type'    => $type,
   );
   foreach ($package as $symbol) {
     $package_map['reverse'][$symbol] = $key;
   }
 }
 
 ksort($runtime_map);
 $runtime_map = var_export($runtime_map, true);
 $runtime_map = preg_replace('/\s+$/m', '', $runtime_map);
 $runtime_map = preg_replace('/array \(/', 'array(', $runtime_map);
 
 $package_map['packages'] = isort($package_map['packages'], 'name');
 ksort($package_map['reverse']);
 $package_map = var_export($package_map, true);
 $package_map = preg_replace('/\s+$/m', '', $package_map);
 $package_map = preg_replace('/array \(/', 'array(', $package_map);
 
 $generated = '@'.'generated';
 $resource_map = <<<EOFILE
 <?php
 
 /**
  * This file is automatically generated. Use 'celerity_mapper.php' to rebuild
  * it.
  * {$generated}
  */
 
 celerity_register_resource_map({$runtime_map}, {$package_map});
 
 EOFILE;
 
 echo "Writing map...\n";
 Filesystem::writeFile($celerity_path, $resource_map);
 echo "Done.\n";
diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php
index c6a337e27a..9b825b467f 100644
--- a/src/__celerity_resource_map__.php
+++ b/src/__celerity_resource_map__.php
@@ -1,4386 +1,4386 @@
 <?php
 
 /**
  * This file is automatically generated. Use 'celerity_mapper.php' to rebuild
  * it.
  * @generated
  */
 
 celerity_register_resource_map(array(
   '/rsrc/image/actions/edit.png' =>
   array(
     'hash' => 'ae90914d120ac3838ddc633b480343f3',
     'uri' => '/res/ae90914d/rsrc/image/actions/edit.png',
     'disk' => '/rsrc/image/actions/edit.png',
     'type' => 'png',
   ),
   '/rsrc/image/apple-touch-icon.png' =>
   array(
     'hash' => '3380adf2dd4a5efa0885618bc5943640',
     'uri' => '/res/3380adf2/rsrc/image/apple-touch-icon.png',
     'disk' => '/rsrc/image/apple-touch-icon.png',
     'type' => 'png',
   ),
   '/rsrc/image/avatar.png' =>
   array(
     'hash' => '1c5f255071537f05406adee86717ff27',
     'uri' => '/res/1c5f2550/rsrc/image/avatar.png',
     'disk' => '/rsrc/image/avatar.png',
     'type' => 'png',
   ),
   '/rsrc/image/checker_dark.png' =>
   array(
     'hash' => '640f795343df76ebe5409aae6187e57f',
     'uri' => '/res/640f7953/rsrc/image/checker_dark.png',
     'disk' => '/rsrc/image/checker_dark.png',
     'type' => 'png',
   ),
   '/rsrc/image/checker_light.png' =>
   array(
     'hash' => '7f8f3ef8beb0f2cc4cc69efb9e1c3308',
     'uri' => '/res/7f8f3ef8/rsrc/image/checker_light.png',
     'disk' => '/rsrc/image/checker_light.png',
     'type' => 'png',
   ),
   '/rsrc/image/credit_cards.png' =>
   array(
     'hash' => '681448de424ea159b6ea68af04c046ae',
     'uri' => '/res/681448de/rsrc/image/credit_cards.png',
     'disk' => '/rsrc/image/credit_cards.png',
     'type' => 'png',
   ),
   '/rsrc/image/darkload.gif' =>
   array(
     'hash' => '3a52cb7145d6e70f461fed21273117f2',
     'uri' => '/res/3a52cb71/rsrc/image/darkload.gif',
     'disk' => '/rsrc/image/darkload.gif',
     'type' => 'gif',
   ),
   '/rsrc/image/divot.png' =>
   array(
     'hash' => '3be267bd11ea375bf68e808893718e0e',
     'uri' => '/res/3be267bd/rsrc/image/divot.png',
     'disk' => '/rsrc/image/divot.png',
     'type' => 'png',
   ),
   '/rsrc/image/grippy_texture.png' =>
   array(
     'hash' => 'a8945e12ceeaddd5b491a8d81cfa19c1',
     'uri' => '/res/a8945e12/rsrc/image/grippy_texture.png',
     'disk' => '/rsrc/image/grippy_texture.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/arrow_branch.png' =>
   array(
     'hash' => 'f27b67520766e3d971722bcff703f3a8',
     'uri' => '/res/f27b6752/rsrc/image/icon/fatcow/arrow_branch.png',
     'disk' => '/rsrc/image/icon/fatcow/arrow_branch.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/arrow_merge.png' =>
   array(
     'hash' => 'c4bd97f3b1257439e2123ef69d2194d0',
     'uri' => '/res/c4bd97f3/rsrc/image/icon/fatcow/arrow_merge.png',
     'disk' => '/rsrc/image/icon/fatcow/arrow_merge.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/bullet_black.png' =>
   array(
     'hash' => '718f9c560a13766796f1be7dfaadeeab',
     'uri' => '/res/718f9c56/rsrc/image/icon/fatcow/bullet_black.png',
     'disk' => '/rsrc/image/icon/fatcow/bullet_black.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/bullet_orange.png' =>
   array(
     'hash' => 'c3bf91b65baacb27f2af143ab9180119',
     'uri' => '/res/c3bf91b6/rsrc/image/icon/fatcow/bullet_orange.png',
     'disk' => '/rsrc/image/icon/fatcow/bullet_orange.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/bullet_red.png' =>
   array(
     'hash' => '00273e4aa6ea3de630295610d6c9560c',
     'uri' => '/res/00273e4a/rsrc/image/icon/fatcow/bullet_red.png',
     'disk' => '/rsrc/image/icon/fatcow/bullet_red.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/calendar_edit.png' =>
   array(
     'hash' => 'de249c0f4f37bf5b2c69ff39ec5573fb',
     'uri' => '/res/de249c0f/rsrc/image/icon/fatcow/calendar_edit.png',
     'disk' => '/rsrc/image/icon/fatcow/calendar_edit.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/document_black.png' =>
   array(
     'hash' => '44d65a7f05a9c921719deedc160d68f7',
     'uri' => '/res/44d65a7f/rsrc/image/icon/fatcow/document_black.png',
     'disk' => '/rsrc/image/icon/fatcow/document_black.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_blue.png' =>
   array(
     'hash' => '75a080492f900fbe489e4b27e403962b',
     'uri' => '/res/75a08049/rsrc/image/icon/fatcow/flag_blue.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_blue.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_finish.png' =>
   array(
     'hash' => '4af11fc7fab8e4610cbc3c88a02d4f78',
     'uri' => '/res/4af11fc7/rsrc/image/icon/fatcow/flag_finish.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_finish.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_ghost.png' =>
   array(
     'hash' => '14c9f30a37b43f276f27a27a924bf02d',
     'uri' => '/res/14c9f30a/rsrc/image/icon/fatcow/flag_ghost.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_ghost.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_green.png' =>
   array(
     'hash' => 'fed01374cd396cb774872762dcc447e1',
     'uri' => '/res/fed01374/rsrc/image/icon/fatcow/flag_green.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_green.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_orange.png' =>
   array(
     'hash' => '88008cb8bb99761a37e5a743e2455aeb',
     'uri' => '/res/88008cb8/rsrc/image/icon/fatcow/flag_orange.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_orange.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_pink.png' =>
   array(
     'hash' => '2f199f06ffc3dfc81b7561a057e0bc33',
     'uri' => '/res/2f199f06/rsrc/image/icon/fatcow/flag_pink.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_pink.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_purple.png' =>
   array(
     'hash' => '16358629dc86c39550b575586eb5df80',
     'uri' => '/res/16358629/rsrc/image/icon/fatcow/flag_purple.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_purple.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_red.png' =>
   array(
     'hash' => '210c28b4d93c439a499f5814f5e05772',
     'uri' => '/res/210c28b4/rsrc/image/icon/fatcow/flag_red.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_red.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/flag_yellow.png' =>
   array(
     'hash' => 'bdfd73744a80bb80329ae50bc8a5f962',
     'uri' => '/res/bdfd7374/rsrc/image/icon/fatcow/flag_yellow.png',
     'disk' => '/rsrc/image/icon/fatcow/flag_yellow.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/folder.png' =>
   array(
     'hash' => '25e46cf9d210dde2242332296f79938c',
     'uri' => '/res/25e46cf9/rsrc/image/icon/fatcow/folder.png',
     'disk' => '/rsrc/image/icon/fatcow/folder.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/folder_go.png' =>
   array(
     'hash' => 'ba922ff7959309f51a14cb7ed5124d8b',
     'uri' => '/res/ba922ff7/rsrc/image/icon/fatcow/folder_go.png',
     'disk' => '/rsrc/image/icon/fatcow/folder_go.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/key_question.png' =>
   array(
     'hash' => '530a6448a4b91edec091a9292ccfd3d9',
     'uri' => '/res/530a6448/rsrc/image/icon/fatcow/key_question.png',
     'disk' => '/rsrc/image/icon/fatcow/key_question.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/link.png' =>
   array(
     'hash' => 'be1bea49b216548433014f3324902928',
     'uri' => '/res/be1bea49/rsrc/image/icon/fatcow/link.png',
     'disk' => '/rsrc/image/icon/fatcow/link.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/page_white_edit.png' =>
   array(
     'hash' => 'e7b7e7f2d9730bc80bc5c9eac1f3e36d',
     'uri' => '/res/e7b7e7f2/rsrc/image/icon/fatcow/page_white_edit.png',
     'disk' => '/rsrc/image/icon/fatcow/page_white_edit.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/page_white_link.png' =>
   array(
     'hash' => '1cfbad14412bda6c6f132dcc7c8725fd',
     'uri' => '/res/1cfbad14/rsrc/image/icon/fatcow/page_white_link.png',
     'disk' => '/rsrc/image/icon/fatcow/page_white_link.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/page_white_put.png' =>
   array(
     'hash' => 'bb7308aa5ac40137a8262da395a267fd',
     'uri' => '/res/bb7308aa/rsrc/image/icon/fatcow/page_white_put.png',
     'disk' => '/rsrc/image/icon/fatcow/page_white_put.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/page_white_text.png' =>
   array(
     'hash' => 'e47d590b626f617fb7d1d44e96e8fd11',
     'uri' => '/res/e47d590b/rsrc/image/icon/fatcow/page_white_text.png',
     'disk' => '/rsrc/image/icon/fatcow/page_white_text.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/source/conduit.png' =>
   array(
     'hash' => '1cae0656580aa3cd0b54b9d98306b1b9',
     'uri' => '/res/1cae0656/rsrc/image/icon/fatcow/source/conduit.png',
     'disk' => '/rsrc/image/icon/fatcow/source/conduit.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/source/email.png' =>
   array(
     'hash' => '93bdb3e168da1ed68f50c42125729d4e',
     'uri' => '/res/93bdb3e1/rsrc/image/icon/fatcow/source/email.png',
     'disk' => '/rsrc/image/icon/fatcow/source/email.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/source/fax.png' =>
   array(
     'hash' => 'd7dedf229841f2d041b347afd881596f',
     'uri' => '/res/d7dedf22/rsrc/image/icon/fatcow/source/fax.png',
     'disk' => '/rsrc/image/icon/fatcow/source/fax.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/source/mobile.png' =>
   array(
     'hash' => '786e7146d1e7d7318baf76c9d2baad97',
     'uri' => '/res/786e7146/rsrc/image/icon/fatcow/source/mobile.png',
     'disk' => '/rsrc/image/icon/fatcow/source/mobile.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/source/tablet.png' =>
   array(
     'hash' => '374cd40e4965be6b2fbdef4059d0ca05',
     'uri' => '/res/374cd40e/rsrc/image/icon/fatcow/source/tablet.png',
     'disk' => '/rsrc/image/icon/fatcow/source/tablet.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/source/web.png' =>
   array(
     'hash' => 'f4882a8f5619ba505ca033f72a340635',
     'uri' => '/res/f4882a8f/rsrc/image/icon/fatcow/source/web.png',
     'disk' => '/rsrc/image/icon/fatcow/source/web.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/default160x120.png' =>
   array(
     'hash' => '1b52ebd1fe0eee3ed0abfc382991b265',
     'uri' => '/res/1b52ebd1/rsrc/image/icon/fatcow/thumbnails/default160x120.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/default160x120.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/default60x45.png' =>
   array(
     'hash' => '048d851d8d1daad4754e891e734c1899',
     'uri' => '/res/048d851d/rsrc/image/icon/fatcow/thumbnails/default60x45.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/default60x45.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/image160x120.png' =>
   array(
     'hash' => '434acbd8dbbc2da9f09f6205a396eba1',
     'uri' => '/res/434acbd8/rsrc/image/icon/fatcow/thumbnails/image160x120.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/image160x120.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/image60x45.png' =>
   array(
     'hash' => '29f7872dc53588fe0b8f0b330c7ee23a',
     'uri' => '/res/29f7872d/rsrc/image/icon/fatcow/thumbnails/image60x45.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/image60x45.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png' =>
   array(
     'hash' => '39d2e22541658a3472ba41ae2fa548e5',
     'uri' => '/res/39d2e225/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/pdf160x120.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png' =>
   array(
     'hash' => 'b3572e9317cbed5184d12bdfabed2727',
     'uri' => '/res/b3572e93/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/pdf60x45.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/zip160x120.png' =>
   array(
     'hash' => 'e505108688a903b5cfb674707a289bcc',
     'uri' => '/res/e5051086/rsrc/image/icon/fatcow/thumbnails/zip160x120.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/zip160x120.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/fatcow/thumbnails/zip60x45.png' =>
   array(
     'hash' => 'f00716f4e8f7a95e70d43504f06be0a6',
     'uri' => '/res/f00716f4/rsrc/image/icon/fatcow/thumbnails/zip60x45.png',
     'disk' => '/rsrc/image/icon/fatcow/thumbnails/zip60x45.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/lightbox/close-2.png' =>
   array(
     'hash' => '72ff3ddcc1ed5d19a715ed6242114b53',
     'uri' => '/res/72ff3ddc/rsrc/image/icon/lightbox/close-2.png',
     'disk' => '/rsrc/image/icon/lightbox/close-2.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/lightbox/close-hover-2.png' =>
   array(
     'hash' => '6ad4bd4a7820547a1d9041752546ba16',
     'uri' => '/res/6ad4bd4a/rsrc/image/icon/lightbox/close-hover-2.png',
     'disk' => '/rsrc/image/icon/lightbox/close-hover-2.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/lightbox/left-arrow-2.png' =>
   array(
     'hash' => 'd84cbb0d42739f87b8f25b2f1d2f1153',
     'uri' => '/res/d84cbb0d/rsrc/image/icon/lightbox/left-arrow-2.png',
     'disk' => '/rsrc/image/icon/lightbox/left-arrow-2.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/lightbox/left-arrow-hover-2.png' =>
   array(
     'hash' => 'cdf05f98fff3f390cd8df0c89894a3e1',
     'uri' => '/res/cdf05f98/rsrc/image/icon/lightbox/left-arrow-hover-2.png',
     'disk' => '/rsrc/image/icon/lightbox/left-arrow-hover-2.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/lightbox/right-arrow-2.png' =>
   array(
     'hash' => '52021038cb6995c71f62a804bc2d420d',
     'uri' => '/res/52021038/rsrc/image/icon/lightbox/right-arrow-2.png',
     'disk' => '/rsrc/image/icon/lightbox/right-arrow-2.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/lightbox/right-arrow-hover-2.png' =>
   array(
     'hash' => '65d5756b7b9cfcdeb2eb197a9aa6bbd2',
     'uri' => '/res/65d5756b/rsrc/image/icon/lightbox/right-arrow-hover-2.png',
     'disk' => '/rsrc/image/icon/lightbox/right-arrow-hover-2.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/subscribe.png' =>
   array(
     'hash' => '5f47a4b17de245af39a4e7a097e40623',
     'uri' => '/res/5f47a4b1/rsrc/image/icon/subscribe.png',
     'disk' => '/rsrc/image/icon/subscribe.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/tango/attachment.png' =>
   array(
     'hash' => '776fed2de89803fd8a0ba4b9deede230',
     'uri' => '/res/776fed2d/rsrc/image/icon/tango/attachment.png',
     'disk' => '/rsrc/image/icon/tango/attachment.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/tango/edit.png' =>
   array(
     'hash' => 'c0028d99dcf4e9559bbf3c88ce2d8a8d',
     'uri' => '/res/c0028d99/rsrc/image/icon/tango/edit.png',
     'disk' => '/rsrc/image/icon/tango/edit.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/tango/go-down.png' =>
   array(
     'hash' => '96862812cbb0445573c264dc057b8300',
     'uri' => '/res/96862812/rsrc/image/icon/tango/go-down.png',
     'disk' => '/rsrc/image/icon/tango/go-down.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/tango/log.png' =>
   array(
     'hash' => 'a6f72499bef279ff6807a7dbc5148f1e',
     'uri' => '/res/a6f72499/rsrc/image/icon/tango/log.png',
     'disk' => '/rsrc/image/icon/tango/log.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/tango/upload.png' =>
   array(
     'hash' => '8c11b63d6d99db3d7159c5d9a94e3062',
     'uri' => '/res/8c11b63d/rsrc/image/icon/tango/upload.png',
     'disk' => '/rsrc/image/icon/tango/upload.png',
     'type' => 'png',
   ),
   '/rsrc/image/icon/unsubscribe.png' =>
   array(
     'hash' => '29429ad65aa3af50b072b32087057361',
     'uri' => '/res/29429ad6/rsrc/image/icon/unsubscribe.png',
     'disk' => '/rsrc/image/icon/unsubscribe.png',
     'type' => 'png',
   ),
   '/rsrc/image/loading.gif' =>
   array(
     'hash' => '664297671941142f37d8c89e717ff2ce',
     'uri' => '/res/66429767/rsrc/image/loading.gif',
     'disk' => '/rsrc/image/loading.gif',
     'type' => 'gif',
   ),
   '/rsrc/image/main_texture.png' =>
   array(
     'hash' => 'e34d8143384721be73ec9b7532a977ab',
     'uri' => '/res/e34d8143/rsrc/image/main_texture.png',
     'disk' => '/rsrc/image/main_texture.png',
     'type' => 'png',
   ),
   '/rsrc/image/menu_texture.png' =>
   array(
     'hash' => 'ad020b1529b3a3b3480ca9de1d5f1e40',
     'uri' => '/res/ad020b15/rsrc/image/menu_texture.png',
     'disk' => '/rsrc/image/menu_texture.png',
     'type' => 'png',
   ),
   '/rsrc/image/people/harding.png' =>
   array(
     'hash' => '818b035ace2c480aa8df7b7f11cef58b',
     'uri' => '/res/818b035a/rsrc/image/people/harding.png',
     'disk' => '/rsrc/image/people/harding.png',
     'type' => 'png',
   ),
   '/rsrc/image/people/jefferson.png' =>
   array(
     'hash' => '55fe807ff02f9320e595fb59442e2038',
     'uri' => '/res/55fe807f/rsrc/image/people/jefferson.png',
     'disk' => '/rsrc/image/people/jefferson.png',
     'type' => 'png',
   ),
   '/rsrc/image/people/lincoln.png' =>
   array(
     'hash' => '2363337947ab52fd5fda79e4a004e930',
     'uri' => '/res/23633379/rsrc/image/people/lincoln.png',
     'disk' => '/rsrc/image/people/lincoln.png',
     'type' => 'png',
   ),
   '/rsrc/image/people/mckinley.png' =>
   array(
     'hash' => '0b7b05dd47c49a0874670e5e8200bba8',
     'uri' => '/res/0b7b05dd/rsrc/image/people/mckinley.png',
     'disk' => '/rsrc/image/people/mckinley.png',
     'type' => 'png',
   ),
   '/rsrc/image/people/taft.png' =>
   array(
     'hash' => 'f3e47d45b59b0b009fd536dabae9a151',
     'uri' => '/res/f3e47d45/rsrc/image/people/taft.png',
     'disk' => '/rsrc/image/people/taft.png',
     'type' => 'png',
   ),
   '/rsrc/image/people/washington.png' =>
   array(
     'hash' => '01412761cab769f7993d69eba986d949',
     'uri' => '/res/01412761/rsrc/image/people/washington.png',
     'disk' => '/rsrc/image/people/washington.png',
     'type' => 'png',
   ),
   '/rsrc/image/phrequent_active.png' =>
   array(
     'hash' => '716cddc08630eaa33934b2008723cac0',
     'uri' => '/res/716cddc0/rsrc/image/phrequent_active.png',
     'disk' => '/rsrc/image/phrequent_active.png',
     'type' => 'png',
   ),
   '/rsrc/image/phrequent_inactive.png' =>
   array(
     'hash' => 'f9099683873c01c5de1dc6650bd668fe',
     'uri' => '/res/f9099683/rsrc/image/phrequent_inactive.png',
     'disk' => '/rsrc/image/phrequent_inactive.png',
     'type' => 'png',
   ),
   '/rsrc/image/search.png' =>
   array(
     'hash' => 'ff7da044e6f923b8f569dec11f97e5e5',
     'uri' => '/res/ff7da044/rsrc/image/search.png',
     'disk' => '/rsrc/image/search.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-actions-X2.png' =>
   array(
     'hash' => '06962a5e8bea98ba7418d1d6cabcd7dc',
     'uri' => '/res/06962a5e/rsrc/image/sprite-actions-X2.png',
     'disk' => '/rsrc/image/sprite-actions-X2.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-actions.png' =>
   array(
     'hash' => 'd5dda5fab1e61b00538c9a4fa1ee94c8',
     'uri' => '/res/d5dda5fa/rsrc/image/sprite-actions.png',
     'disk' => '/rsrc/image/sprite-actions.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-apps-X2.png' =>
   array(
     'hash' => '35a4b5c92f0b05a6a06c8a8e2f409d9e',
     'uri' => '/res/35a4b5c9/rsrc/image/sprite-apps-X2.png',
     'disk' => '/rsrc/image/sprite-apps-X2.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-apps-large-X2.png' =>
   array(
     'hash' => '6295f60df446103f0de702f25bc502e1',
     'uri' => '/res/6295f60d/rsrc/image/sprite-apps-large-X2.png',
     'disk' => '/rsrc/image/sprite-apps-large-X2.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-apps-large.png' =>
   array(
     'hash' => '734d9268dd3a69102b194a7461c68631',
     'uri' => '/res/734d9268/rsrc/image/sprite-apps-large.png',
     'disk' => '/rsrc/image/sprite-apps-large.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-apps-xlarge.png' =>
   array(
     'hash' => '992d2c278b6a22c0fa874d457a252fbd',
     'uri' => '/res/992d2c27/rsrc/image/sprite-apps-xlarge.png',
     'disk' => '/rsrc/image/sprite-apps-xlarge.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-apps.png' =>
   array(
     'hash' => 'eed2e0e322821e1c0836fc62639c1af1',
     'uri' => '/res/eed2e0e3/rsrc/image/sprite-apps.png',
     'disk' => '/rsrc/image/sprite-apps.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-conpherence-X2.png' =>
   array(
     'hash' => '5e47868b00933a9afb6c844e464e6b23',
     'uri' => '/res/5e47868b/rsrc/image/sprite-conpherence-X2.png',
     'disk' => '/rsrc/image/sprite-conpherence-X2.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-conpherence.png' =>
   array(
     'hash' => 'ca51f1be25213262d68e626e4cab7f0f',
     'uri' => '/res/ca51f1be/rsrc/image/sprite-conpherence.png',
     'disk' => '/rsrc/image/sprite-conpherence.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-docs-X2.png' =>
   array(
     'hash' => '57d3286ce88133f3ec9240e35f6bb897',
     'uri' => '/res/57d3286c/rsrc/image/sprite-docs-X2.png',
     'disk' => '/rsrc/image/sprite-docs-X2.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-docs.png' =>
   array(
     'hash' => 'b2b089072d6eddd831402a77c02b5736',
     'uri' => '/res/b2b08907/rsrc/image/sprite-docs.png',
     'disk' => '/rsrc/image/sprite-docs.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-gradient.png' =>
   array(
     'hash' => 'e52f57d64edfddfcc2f8bd26a262dda2',
     'uri' => '/res/e52f57d6/rsrc/image/sprite-gradient.png',
     'disk' => '/rsrc/image/sprite-gradient.png',
     'type' => 'png',
   ),
-  '/rsrc/image/sprite-icon-X2.png' =>
+  '/rsrc/image/sprite-icons-X2.png' =>
   array(
-    'hash' => 'd9d7e2a4ede625d34e04877e836e6c38',
-    'uri' => '/res/d9d7e2a4/rsrc/image/sprite-icon-X2.png',
-    'disk' => '/rsrc/image/sprite-icon-X2.png',
+    'hash' => '74551ad4423b882608a7325febe96a87',
+    'uri' => '/res/74551ad4/rsrc/image/sprite-icons-X2.png',
+    'disk' => '/rsrc/image/sprite-icons-X2.png',
     'type' => 'png',
   ),
-  '/rsrc/image/sprite-icon.png' =>
+  '/rsrc/image/sprite-icons.png' =>
   array(
-    'hash' => '000c96ed6b43fbb26caec3ff2b13687f',
-    'uri' => '/res/000c96ed/rsrc/image/sprite-icon.png',
-    'disk' => '/rsrc/image/sprite-icon.png',
+    'hash' => '04e38e15232e1e0dee5acb9ae9b5ac72',
+    'uri' => '/res/04e38e15/rsrc/image/sprite-icons.png',
+    'disk' => '/rsrc/image/sprite-icons.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-menu-X2.png' =>
   array(
     'hash' => '867092041ce0a62b7e50136213ca7be1',
     'uri' => '/res/86709204/rsrc/image/sprite-menu-X2.png',
     'disk' => '/rsrc/image/sprite-menu-X2.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-menu.png' =>
   array(
     'hash' => '21508eebdf582d7251d62bb2cd09f66d',
     'uri' => '/res/21508eeb/rsrc/image/sprite-menu.png',
     'disk' => '/rsrc/image/sprite-menu.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-minicons-X2.png' =>
   array(
     'hash' => 'c420c6462f7e50ca9941ccc5dd9e3dec',
     'uri' => '/res/c420c646/rsrc/image/sprite-minicons-X2.png',
     'disk' => '/rsrc/image/sprite-minicons-X2.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-minicons.png' =>
   array(
     'hash' => '168bb875933624b3080a1cc134e5b4ed',
     'uri' => '/res/168bb875/rsrc/image/sprite-minicons.png',
     'disk' => '/rsrc/image/sprite-minicons.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-payments.png' =>
   array(
     'hash' => '5ce73fb580609e7cda16832e3577b147',
     'uri' => '/res/5ce73fb5/rsrc/image/sprite-payments.png',
     'disk' => '/rsrc/image/sprite-payments.png',
     'type' => 'png',
   ),
   '/rsrc/image/sprite-tokens.png' =>
   array(
     'hash' => '67c46fd75c885b76ecbfe46e71a476cc',
     'uri' => '/res/67c46fd7/rsrc/image/sprite-tokens.png',
     'disk' => '/rsrc/image/sprite-tokens.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/card-gradient.png' =>
   array(
     'hash' => '268b7fdd758d4bf99db8de6770aae8af',
     'uri' => '/res/268b7fdd/rsrc/image/texture/card-gradient.png',
     'disk' => '/rsrc/image/texture/card-gradient.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/dark-menu-hover.png' =>
   array(
     'hash' => 'a214a732644be34872e895b338b5d639',
     'uri' => '/res/a214a732/rsrc/image/texture/dark-menu-hover.png',
     'disk' => '/rsrc/image/texture/dark-menu-hover.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/dark-menu.png' =>
   array(
     'hash' => '41ee673a762cec48a154b456ad5ac204',
     'uri' => '/res/41ee673a/rsrc/image/texture/dark-menu.png',
     'disk' => '/rsrc/image/texture/dark-menu.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/grip.png' =>
   array(
     'hash' => 'f11bc231d241f1335cfca2933ad234e0',
     'uri' => '/res/f11bc231/rsrc/image/texture/grip.png',
     'disk' => '/rsrc/image/texture/grip.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/panel-header-gradient.png' =>
   array(
     'hash' => 'ad9204dd3ef5b12b645d80677d8ccead',
     'uri' => '/res/ad9204dd/rsrc/image/texture/panel-header-gradient.png',
     'disk' => '/rsrc/image/texture/panel-header-gradient.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/pholio-background.gif' =>
   array(
     'hash' => 'cf4561af116edf393dc583e5119fb412',
     'uri' => '/res/cf4561af/rsrc/image/texture/pholio-background.gif',
     'disk' => '/rsrc/image/texture/pholio-background.gif',
     'type' => 'gif',
   ),
   '/rsrc/image/texture/table_header.png' =>
   array(
     'hash' => '4ed3f56a30d3749e8f62052b9735a316',
     'uri' => '/res/4ed3f56a/rsrc/image/texture/table_header.png',
     'disk' => '/rsrc/image/texture/table_header.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/table_header_hover.png' =>
   array(
     'hash' => 'ea1f71a604e9b4859de1e25751540437',
     'uri' => '/res/ea1f71a6/rsrc/image/texture/table_header_hover.png',
     'disk' => '/rsrc/image/texture/table_header_hover.png',
     'type' => 'png',
   ),
   '/rsrc/image/texture/table_header_tall.png' =>
   array(
     'hash' => 'b05525601f78d759f1c5e47fd9c1a8aa',
     'uri' => '/res/b0552560/rsrc/image/texture/table_header_tall.png',
     'disk' => '/rsrc/image/texture/table_header_tall.png',
     'type' => 'png',
   ),
   '/rsrc/swf/aphlict.swf' =>
   array(
     'hash' => '4b9a9d83bebaf254f3790e87b45c1f92',
     'uri' => '/res/4b9a9d83/rsrc/swf/aphlict.swf',
     'disk' => '/rsrc/swf/aphlict.swf',
     'type' => 'swf',
   ),
   'aphront-attached-file-view-css' =>
   array(
     'uri' => '/res/a6ca5487/rsrc/css/aphront/attached-file-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/attached-file-view.css',
   ),
   'aphront-bars' =>
   array(
     'uri' => '/res/95a907d6/rsrc/css/aphront/aphront-bars.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/aphront-bars.css',
   ),
   'aphront-calendar-view-css' =>
   array(
     'uri' => '/res/ae6f5b54/rsrc/css/aphront/calendar-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/calendar-view.css',
   ),
   'aphront-contextbar-view-css' =>
   array(
     'uri' => '/res/ecfd5ba9/rsrc/css/aphront/context-bar.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/context-bar.css',
   ),
   'aphront-dark-console-css' =>
   array(
     'uri' => '/res/0d316573/rsrc/css/aphront/dark-console.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/dark-console.css',
   ),
   'aphront-dialog-view-css' =>
   array(
     'uri' => '/res/7060a2fe/rsrc/css/aphront/dialog-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/dialog-view.css',
   ),
   'aphront-error-view-css' =>
   array(
     'uri' => '/res/5f43a7c5/rsrc/css/aphront/error-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/error-view.css',
   ),
   'aphront-form-view-css' =>
   array(
     'uri' => '/res/d82ea207/rsrc/css/aphront/form-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/form-view.css',
   ),
   'aphront-list-filter-view-css' =>
   array(
     'uri' => '/res/639ea9e9/rsrc/css/aphront/list-filter-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/list-filter-view.css',
   ),
   'aphront-multi-column-view-css' =>
   array(
     'uri' => '/res/4e5ae0f3/rsrc/css/aphront/multi-column.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/multi-column.css',
   ),
   'aphront-notes' =>
   array(
     'uri' => '/res/5b8ebfa0/rsrc/css/aphront/aphront-notes.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/aphront-notes.css',
   ),
   'aphront-pager-view-css' =>
   array(
     'uri' => '/res/43fb79f0/rsrc/css/aphront/pager-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/pager-view.css',
   ),
   'aphront-panel-view-css' =>
   array(
     'uri' => '/res/5600525c/rsrc/css/aphront/panel-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/panel-view.css',
   ),
   'aphront-request-failure-view-css' =>
   array(
     'uri' => '/res/c9a43002/rsrc/css/aphront/request-failure-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/request-failure-view.css',
   ),
   'aphront-table-view-css' =>
   array(
     'uri' => '/res/d3c44c69/rsrc/css/aphront/table-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/table-view.css',
   ),
   'aphront-tokenizer-control-css' =>
   array(
     'uri' => '/res/34d83c5b/rsrc/css/aphront/tokenizer.css',
     'type' => 'css',
     'requires' =>
     array(
       0 => 'aphront-typeahead-control-css',
     ),
     'disk' => '/rsrc/css/aphront/tokenizer.css',
   ),
   'aphront-tooltip-css' =>
   array(
     'uri' => '/res/3a7d8e07/rsrc/css/aphront/tooltip.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/tooltip.css',
   ),
   'aphront-two-column-view-css' =>
   array(
     'uri' => '/res/4263aa98/rsrc/css/aphront/two-column.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/two-column.css',
   ),
   'aphront-typeahead-control-css' =>
   array(
     'uri' => '/res/ef59c20c/rsrc/css/aphront/typeahead.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/typeahead.css',
   ),
   'config-options-css' =>
   array(
     'uri' => '/res/be77d5a6/rsrc/css/application/config/config-options.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/config/config-options.css',
   ),
   'conpherence-header-pane-css' =>
   array(
     'uri' => '/res/dc654fce/rsrc/css/application/conpherence/header-pane.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/conpherence/header-pane.css',
   ),
   'conpherence-menu-css' =>
   array(
     'uri' => '/res/3a60b96c/rsrc/css/application/conpherence/menu.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/conpherence/menu.css',
   ),
   'conpherence-message-pane-css' =>
   array(
     'uri' => '/res/52cf7ca3/rsrc/css/application/conpherence/message-pane.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/conpherence/message-pane.css',
   ),
   'conpherence-update-css' =>
   array(
     'uri' => '/res/92094ed7/rsrc/css/application/conpherence/update.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/conpherence/update.css',
   ),
   'conpherence-widget-pane-css' =>
   array(
     'uri' => '/res/197df36c/rsrc/css/application/conpherence/widget-pane.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/conpherence/widget-pane.css',
   ),
   'differential-changeset-view-css' =>
   array(
     'uri' => '/res/8ee213f4/rsrc/css/application/differential/changeset-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/changeset-view.css',
   ),
   'differential-core-view-css' =>
   array(
     'uri' => '/res/85fe5117/rsrc/css/application/differential/core.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/core.css',
   ),
   'differential-inline-comment-editor' =>
   array(
     'uri' => '/res/e0ad34ac/rsrc/js/application/differential/DifferentialInlineCommentEditor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-dom',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
       3 => 'javelin-install',
       4 => 'javelin-request',
       5 => 'javelin-workflow',
     ),
     'disk' => '/rsrc/js/application/differential/DifferentialInlineCommentEditor.js',
   ),
   'differential-local-commits-view-css' =>
   array(
     'uri' => '/res/224f3703/rsrc/css/application/differential/local-commits-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/local-commits-view.css',
   ),
   'differential-results-table-css' =>
   array(
     'uri' => '/res/aab3123c/rsrc/css/application/differential/results-table.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/results-table.css',
   ),
   'differential-revision-add-comment-css' =>
   array(
     'uri' => '/res/849748d3/rsrc/css/application/differential/add-comment.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/add-comment.css',
   ),
   'differential-revision-comment-css' =>
   array(
     'uri' => '/res/42c222f4/rsrc/css/application/differential/revision-comment.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/revision-comment.css',
   ),
   'differential-revision-comment-list-css' =>
   array(
     'uri' => '/res/3b31faa3/rsrc/css/application/differential/revision-comment-list.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/revision-comment-list.css',
   ),
   'differential-revision-history-css' =>
   array(
     'uri' => '/res/d41bc64c/rsrc/css/application/differential/revision-history.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/revision-history.css',
   ),
   'differential-revision-list-css' =>
   array(
     'uri' => '/res/fe6c4721/rsrc/css/application/differential/revision-list.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/revision-list.css',
   ),
   'differential-table-of-contents-css' =>
   array(
     'uri' => '/res/4fde8bfc/rsrc/css/application/differential/table-of-contents.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/differential/table-of-contents.css',
   ),
   'diffusion-commit-view-css' =>
   array(
     'uri' => '/res/b445944e/rsrc/css/application/diffusion/commit-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/diffusion/commit-view.css',
   ),
   'diffusion-icons-css' =>
   array(
     'uri' => '/res/b93e32c9/rsrc/css/application/diffusion/diffusion-icons.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/diffusion/diffusion-icons.css',
   ),
   'diffusion-source-css' =>
   array(
     'uri' => '/res/e76bcd50/rsrc/css/application/diffusion/diffusion-source.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/diffusion/diffusion-source.css',
   ),
   'global-drag-and-drop-css' =>
   array(
     'uri' => '/res/4e24cb65/rsrc/css/application/files/global-drag-and-drop.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/files/global-drag-and-drop.css',
   ),
   'herald-css' =>
   array(
     'uri' => '/res/2150a55d/rsrc/css/application/herald/herald.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/herald/herald.css',
   ),
   'herald-rule-editor' =>
   array(
     'uri' => '/res/f8ee0e9c/rsrc/js/application/herald/HeraldRuleEditor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'multirow-row-manager',
       1 => 'javelin-install',
       2 => 'javelin-typeahead',
       3 => 'javelin-util',
       4 => 'javelin-dom',
       5 => 'javelin-tokenizer',
       6 => 'javelin-typeahead-preloaded-source',
       7 => 'javelin-stratcom',
       8 => 'javelin-json',
       9 => 'phabricator-prefab',
     ),
     'disk' => '/rsrc/js/application/herald/HeraldRuleEditor.js',
   ),
   'herald-test-css' =>
   array(
     'uri' => '/res/c0cd6bdb/rsrc/css/application/herald/herald-test.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/herald/herald-test.css',
   ),
   'inline-comment-summary-css' =>
   array(
     'uri' => '/res/338704f7/rsrc/css/application/diff/inline-comment-summary.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/diff/inline-comment-summary.css',
   ),
   'javelin-aphlict' =>
   array(
     'uri' => '/res/c0b9e53f/rsrc/js/application/aphlict/Aphlict.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/application/aphlict/Aphlict.js',
   ),
   'javelin-behavior' =>
   array(
     'uri' => '/res/adf7368b/rsrc/externals/javelin/lib/behavior.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-magical-init',
     ),
     'disk' => '/rsrc/externals/javelin/lib/behavior.js',
   ),
   'javelin-behavior-aphlict-dropdown' =>
   array(
     'uri' => '/res/2418f448/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-request',
       2 => 'javelin-stratcom',
       3 => 'javelin-vector',
       4 => 'javelin-dom',
       5 => 'javelin-uri',
     ),
     'disk' => '/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js',
   ),
   'javelin-behavior-aphlict-listen' =>
   array(
     'uri' => '/res/6dde3f43/rsrc/js/application/aphlict/behavior-aphlict-listen.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-aphlict',
       2 => 'javelin-stratcom',
       3 => 'javelin-request',
       4 => 'javelin-uri',
       5 => 'javelin-dom',
       6 => 'javelin-json',
       7 => 'phabricator-notification',
     ),
     'disk' => '/rsrc/js/application/aphlict/behavior-aphlict-listen.js',
   ),
   'javelin-behavior-aphront-basic-tokenizer' =>
   array(
     'uri' => '/res/c7fd9a7b/rsrc/js/core/behavior-tokenizer.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'phabricator-prefab',
     ),
     'disk' => '/rsrc/js/core/behavior-tokenizer.js',
   ),
   'javelin-behavior-aphront-crop' =>
   array(
     'uri' => '/res/8c800f36/rsrc/js/core/behavior-crop.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-vector',
       3 => 'javelin-magical-init',
     ),
     'disk' => '/rsrc/js/core/behavior-crop.js',
   ),
   'javelin-behavior-aphront-drag-and-drop' =>
   array(
     'uri' => '/res/36335362/rsrc/js/core/behavior-drag-and-drop.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'phabricator-file-upload',
       3 => 'phabricator-drag-and-drop-file-upload',
     ),
     'disk' => '/rsrc/js/core/behavior-drag-and-drop.js',
   ),
   'javelin-behavior-aphront-drag-and-drop-textarea' =>
   array(
     'uri' => '/res/a261f6e6/rsrc/js/core/behavior-drag-and-drop-textarea.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'phabricator-drag-and-drop-file-upload',
       3 => 'phabricator-textareautils',
     ),
     'disk' => '/rsrc/js/core/behavior-drag-and-drop-textarea.js',
   ),
   'javelin-behavior-aphront-form-disable-on-submit' =>
   array(
     'uri' => '/res/a4a4ff07/rsrc/js/core/behavior-form.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-form.js',
   ),
   'javelin-behavior-aphront-more' =>
   array(
     'uri' => '/res/fae13324/rsrc/js/core/behavior-more.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-more.js',
   ),
   'javelin-behavior-audit-preview' =>
   array(
     'uri' => '/res/3048b073/rsrc/js/application/diffusion/behavior-audit-preview.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/diffusion/behavior-audit-preview.js',
   ),
   'javelin-behavior-balanced-payment-form' =>
   array(
     'uri' => '/res/6876492d/rsrc/js/application/phortune/behavior-balanced-payment-form.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'phortune-credit-card-form',
     ),
     'disk' => '/rsrc/js/application/phortune/behavior-balanced-payment-form.js',
   ),
   'javelin-behavior-conpherence-drag-and-drop-photo' =>
   array(
     'uri' => '/res/9e3eb1cd/rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-workflow',
       3 => 'phabricator-drag-and-drop-file-upload',
     ),
     'disk' => '/rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js',
   ),
   'javelin-behavior-conpherence-menu' =>
   array(
     'uri' => '/res/06bfc1a3/rsrc/js/application/conpherence/behavior-menu.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'javelin-request',
       4 => 'javelin-stratcom',
       5 => 'javelin-workflow',
       6 => 'javelin-behavior-device',
       7 => 'javelin-history',
       8 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/application/conpherence/behavior-menu.js',
   ),
   'javelin-behavior-conpherence-pontificate' =>
   array(
     'uri' => '/res/88ac3361/rsrc/js/application/conpherence/behavior-pontificate.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'javelin-workflow',
       4 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/application/conpherence/behavior-pontificate.js',
   ),
   'javelin-behavior-conpherence-widget-pane' =>
   array(
     'uri' => '/res/a9bcb950/rsrc/js/application/conpherence/behavior-widget-pane.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'javelin-workflow',
       4 => 'javelin-util',
       5 => 'phabricator-notification',
       6 => 'javelin-behavior-device',
     ),
     'disk' => '/rsrc/js/application/conpherence/behavior-widget-pane.js',
   ),
   'javelin-behavior-countdown-timer' =>
   array(
     'uri' => '/res/7468acb7/rsrc/js/application/countdown/timer.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/application/countdown/timer.js',
   ),
   'javelin-behavior-dark-console' =>
   array(
     'uri' => '/res/1e2c7a5e/rsrc/js/core/behavior-dark-console.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-request',
       5 => 'phabricator-keyboard-shortcut',
     ),
     'disk' => '/rsrc/js/core/behavior-dark-console.js',
   ),
   'javelin-behavior-device' =>
   array(
     'uri' => '/res/12e43f5a/rsrc/js/core/behavior-device.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'javelin-vector',
       4 => 'javelin-install',
     ),
     'disk' => '/rsrc/js/core/behavior-device.js',
   ),
   'javelin-behavior-differential-accept-with-errors' =>
   array(
     'uri' => '/res/8fea67b3/rsrc/js/application/differential/behavior-accept-with-errors.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-accept-with-errors.js',
   ),
   'javelin-behavior-differential-add-reviewers-and-ccs' =>
   array(
     'uri' => '/res/27be3f81/rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'phabricator-prefab',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-add-reviewers-and-ccs.js',
   ),
   'javelin-behavior-differential-comment-jump' =>
   array(
     'uri' => '/res/b580229b/rsrc/js/application/differential/behavior-comment-jump.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-util',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-comment-jump.js',
   ),
   'javelin-behavior-differential-diff-radios' =>
   array(
     'uri' => '/res/004cb66f/rsrc/js/application/differential/behavior-diff-radios.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-diff-radios.js',
   ),
   'javelin-behavior-differential-dropdown-menus' =>
   array(
     'uri' => '/res/4e3f1e2f/rsrc/js/application/differential/behavior-dropdown-menus.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'javelin-stratcom',
       4 => 'phabricator-dropdown-menu',
       5 => 'phabricator-menu-item',
       6 => 'phabricator-phtize',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-dropdown-menus.js',
   ),
   'javelin-behavior-differential-edit-inline-comments' =>
   array(
     'uri' => '/res/70c1f3a3/rsrc/js/application/differential/behavior-edit-inline-comments.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'javelin-util',
       4 => 'javelin-vector',
       5 => 'differential-inline-comment-editor',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-edit-inline-comments.js',
   ),
   'javelin-behavior-differential-feedback-preview' =>
   array(
     'uri' => '/res/5fbce8db/rsrc/js/application/differential/behavior-comment-preview.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'javelin-request',
       4 => 'javelin-util',
       5 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-comment-preview.js',
   ),
   'javelin-behavior-differential-keyboard-navigation' =>
   array(
     'uri' => '/res/89e93cc9/rsrc/js/application/differential/behavior-keyboard-nav.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'phabricator-keyboard-shortcut',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-keyboard-nav.js',
   ),
   'javelin-behavior-differential-populate' =>
   array(
     'uri' => '/res/526c2615/rsrc/js/application/differential/behavior-populate.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-workflow',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-stratcom',
       5 => 'javelin-behavior-device',
       6 => 'javelin-vector',
       7 => 'phabricator-tooltip',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-populate.js',
   ),
   'javelin-behavior-differential-show-all-comments' =>
   array(
     'uri' => '/res/5a26be1a/rsrc/js/application/differential/behavior-show-all-comments.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-show-all-comments.js',
   ),
   'javelin-behavior-differential-show-field-details' =>
   array(
     'uri' => '/res/8d57f459/rsrc/js/application/differential/behavior-show-field-details.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-show-field-details.js',
   ),
   'javelin-behavior-differential-show-more' =>
   array(
     'uri' => '/res/b9f93090/rsrc/js/application/differential/behavior-show-more.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-workflow',
       3 => 'javelin-util',
       4 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-show-more.js',
   ),
   'javelin-behavior-differential-toggle-files' =>
   array(
     'uri' => '/res/ae937207/rsrc/js/application/differential/behavior-toggle-files.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-toggle-files.js',
   ),
   'javelin-behavior-differential-user-select' =>
   array(
     'uri' => '/res/23c51a5d/rsrc/js/application/differential/behavior-user-select.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/application/differential/behavior-user-select.js',
   ),
   'javelin-behavior-diffusion-commit-branches' =>
   array(
     'uri' => '/res/1ede335a/rsrc/js/application/diffusion/behavior-commit-branches.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'javelin-request',
     ),
     'disk' => '/rsrc/js/application/diffusion/behavior-commit-branches.js',
   ),
   'javelin-behavior-diffusion-commit-graph' =>
   array(
     'uri' => '/res/62bd2035/rsrc/js/application/diffusion/behavior-commit-graph.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/application/diffusion/behavior-commit-graph.js',
   ),
   'javelin-behavior-diffusion-jump-to' =>
   array(
     'uri' => '/res/7c42e1ba/rsrc/js/application/diffusion/behavior-jump-to.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-util',
       2 => 'javelin-vector',
       3 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/diffusion/behavior-jump-to.js',
   ),
   'javelin-behavior-diffusion-line-linker' =>
   array(
     'uri' => '/res/12866f13/rsrc/js/application/diffusion/behavior-line-linker.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'javelin-history',
     ),
     'disk' => '/rsrc/js/application/diffusion/behavior-line-linker.js',
   ),
   'javelin-behavior-diffusion-pull-lastmodified' =>
   array(
     'uri' => '/res/29fe2790/rsrc/js/application/diffusion/behavior-pull-lastmodified.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'javelin-request',
     ),
     'disk' => '/rsrc/js/application/diffusion/behavior-pull-lastmodified.js',
   ),
   'javelin-behavior-error-log' =>
   array(
     'uri' => '/res/acefdea7/rsrc/js/core/behavior-error-log.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-error-log.js',
   ),
   'javelin-behavior-fancy-datepicker' =>
   array(
     'uri' => '/res/9b67a0f4/rsrc/js/core/behavior-fancy-datepicker.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-util',
       2 => 'javelin-dom',
       3 => 'javelin-stratcom',
       4 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/core/behavior-fancy-datepicker.js',
   ),
   'javelin-behavior-global-drag-and-drop' =>
   array(
     'uri' => '/res/528e18ed/rsrc/js/core/behavior-global-drag-and-drop.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-uri',
       3 => 'javelin-mask',
       4 => 'phabricator-drag-and-drop-file-upload',
     ),
     'disk' => '/rsrc/js/core/behavior-global-drag-and-drop.js',
   ),
   'javelin-behavior-herald-rule-editor' =>
   array(
     'uri' => '/res/77a0c945/rsrc/js/application/herald/herald-rule-editor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'herald-rule-editor',
       1 => 'javelin-behavior',
     ),
     'disk' => '/rsrc/js/application/herald/herald-rule-editor.js',
   ),
   'javelin-behavior-history-install' =>
   array(
     'uri' => '/res/9099a161/rsrc/js/core/behavior-history-install.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-history',
     ),
     'disk' => '/rsrc/js/core/behavior-history-install.js',
   ),
   'javelin-behavior-konami' =>
   array(
     'uri' => '/res/b7bb7c24/rsrc/js/core/behavior-konami.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/core/behavior-konami.js',
   ),
   'javelin-behavior-lightbox-attachments' =>
   array(
     'uri' => '/res/f2b17609/rsrc/js/core/behavior-lightbox-attachments.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'javelin-mask',
       4 => 'javelin-util',
       5 => 'phabricator-busy',
     ),
     'disk' => '/rsrc/js/core/behavior-lightbox-attachments.js',
   ),
   'javelin-behavior-line-chart' =>
   array(
     'uri' => '/res/1aa5ac88/rsrc/js/application/maniphest/behavior-line-chart.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-line-chart.js',
   ),
   'javelin-behavior-load-blame' =>
   array(
     'uri' => '/res/138e2961/rsrc/js/application/diffusion/behavior-load-blame.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-request',
     ),
     'disk' => '/rsrc/js/application/diffusion/behavior-load-blame.js',
   ),
   'javelin-behavior-maniphest-batch-editor' =>
   array(
     'uri' => '/res/00accaec/rsrc/js/application/maniphest/behavior-batch-editor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'phabricator-prefab',
       4 => 'multirow-row-manager',
       5 => 'javelin-json',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-batch-editor.js',
   ),
   'javelin-behavior-maniphest-batch-selector' =>
   array(
     'uri' => '/res/f8cf3b84/rsrc/js/application/maniphest/behavior-batch-selector.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-batch-selector.js',
   ),
   'javelin-behavior-maniphest-description-preview' =>
   array(
     'uri' => '/res/8acd6f07/rsrc/js/application/maniphest/behavior-task-preview.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-task-preview.js',
   ),
   'javelin-behavior-maniphest-subpriority-editor' =>
   array(
     'uri' => '/res/21b73c2a/rsrc/js/application/maniphest/behavior-subpriorityeditor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-magical-init',
       2 => 'javelin-dom',
       3 => 'javelin-vector',
       4 => 'javelin-stratcom',
       5 => 'javelin-workflow',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-subpriorityeditor.js',
   ),
   'javelin-behavior-maniphest-transaction-controls' =>
   array(
     'uri' => '/res/62465554/rsrc/js/application/maniphest/behavior-transaction-controls.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'phabricator-prefab',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-transaction-controls.js',
   ),
   'javelin-behavior-maniphest-transaction-expand' =>
   array(
     'uri' => '/res/966410de/rsrc/js/application/maniphest/behavior-transaction-expand.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-workflow',
       3 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-transaction-expand.js',
   ),
   'javelin-behavior-maniphest-transaction-preview' =>
   array(
     'uri' => '/res/855c9f0c/rsrc/js/application/maniphest/behavior-transaction-preview.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'javelin-json',
       4 => 'javelin-stratcom',
       5 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/maniphest/behavior-transaction-preview.js',
   ),
   'javelin-behavior-owners-path-editor' =>
   array(
     'uri' => '/res/9cf78ffc/rsrc/js/application/owners/owners-path-editor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'owners-path-editor',
       1 => 'javelin-behavior',
     ),
     'disk' => '/rsrc/js/application/owners/owners-path-editor.js',
   ),
   'javelin-behavior-phabricator-active-nav' =>
   array(
     'uri' => '/res/326866c1/rsrc/js/core/behavior-active-nav.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-vector',
       3 => 'javelin-dom',
       4 => 'javelin-uri',
     ),
     'disk' => '/rsrc/js/core/behavior-active-nav.js',
   ),
   'javelin-behavior-phabricator-autofocus' =>
   array(
     'uri' => '/res/bf92b8d6/rsrc/js/core/behavior-autofocus.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-autofocus.js',
   ),
   'javelin-behavior-phabricator-file-tree' =>
   array(
     'uri' => '/res/e5bf93df/rsrc/js/core/behavior-file-tree.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'phabricator-keyboard-shortcut',
       2 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/core/behavior-file-tree.js',
   ),
   'javelin-behavior-phabricator-gesture' =>
   array(
     'uri' => '/res/16e1e77c/rsrc/js/core/behavior-gesture.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-behavior-device',
       2 => 'javelin-stratcom',
       3 => 'javelin-vector',
       4 => 'javelin-dom',
       5 => 'javelin-magical-init',
     ),
     'disk' => '/rsrc/js/core/behavior-gesture.js',
   ),
   'javelin-behavior-phabricator-gesture-example' =>
   array(
     'uri' => '/res/da636e19/rsrc/js/application/uiexample/gesture-example.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-stratcom',
       1 => 'javelin-behavior',
       2 => 'javelin-vector',
       3 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/gesture-example.js',
   ),
   'javelin-behavior-phabricator-hovercards' =>
   array(
     'uri' => '/res/ed56d3c4/rsrc/js/core/behavior-hovercard.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-behavior-device',
       2 => 'javelin-stratcom',
       3 => 'javelin-vector',
       4 => 'phabricator-hovercard',
     ),
     'disk' => '/rsrc/js/core/behavior-hovercard.js',
   ),
   'javelin-behavior-phabricator-keyboard-pager' =>
   array(
     'uri' => '/res/6a5445b8/rsrc/js/core/behavior-keyboard-pager.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-uri',
       2 => 'phabricator-keyboard-shortcut',
     ),
     'disk' => '/rsrc/js/core/behavior-keyboard-pager.js',
   ),
   'javelin-behavior-phabricator-keyboard-shortcuts' =>
   array(
     'uri' => '/res/b971e713/rsrc/js/core/behavior-keyboard-shortcuts.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-workflow',
       2 => 'javelin-json',
       3 => 'javelin-dom',
       4 => 'phabricator-keyboard-shortcut',
     ),
     'disk' => '/rsrc/js/core/behavior-keyboard-shortcuts.js',
   ),
   'javelin-behavior-phabricator-nav' =>
   array(
     'uri' => '/res/ede26aac/rsrc/js/core/behavior-phabricator-nav.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-behavior-device',
       2 => 'javelin-stratcom',
       3 => 'javelin-dom',
       4 => 'javelin-magical-init',
       5 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/core/behavior-phabricator-nav.js',
   ),
   'javelin-behavior-phabricator-notification-example' =>
   array(
     'uri' => '/res/a6d51998/rsrc/js/application/uiexample/notification-example.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'phabricator-notification',
       1 => 'javelin-stratcom',
       2 => 'javelin-behavior',
       3 => 'javelin-uri',
     ),
     'disk' => '/rsrc/js/application/uiexample/notification-example.js',
   ),
   'javelin-behavior-phabricator-object-selector' =>
   array(
     'uri' => '/res/31145104/rsrc/js/core/behavior-object-selector.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-request',
       3 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/core/behavior-object-selector.js',
   ),
   'javelin-behavior-phabricator-oncopy' =>
   array(
     'uri' => '/res/c5839892/rsrc/js/core/behavior-oncopy.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-oncopy.js',
   ),
   'javelin-behavior-phabricator-remarkup-assist' =>
   array(
     'uri' => '/res/ddfb4eba/rsrc/js/core/behavior-phabricator-remarkup-assist.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'phabricator-textareautils',
       4 => 'javelin-workflow',
       5 => 'phabricator-notification',
       6 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/core/behavior-phabricator-remarkup-assist.js',
   ),
   'javelin-behavior-phabricator-reveal-content' =>
   array(
     'uri' => '/res/5f9da91f/rsrc/js/core/behavior-reveal-content.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-reveal-content.js',
   ),
   'javelin-behavior-phabricator-search-typeahead' =>
   array(
     'uri' => '/res/2662f34f/rsrc/js/core/behavior-search-typeahead.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-typeahead-ondemand-source',
       2 => 'javelin-typeahead',
       3 => 'javelin-dom',
       4 => 'javelin-uri',
       5 => 'javelin-util',
       6 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/js/core/behavior-search-typeahead.js',
   ),
   'javelin-behavior-phabricator-tooltips' =>
   array(
     'uri' => '/res/a0ac5320/rsrc/js/core/behavior-tooltip.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-behavior-device',
       2 => 'javelin-stratcom',
       3 => 'phabricator-tooltip',
     ),
     'disk' => '/rsrc/js/core/behavior-tooltip.js',
   ),
   'javelin-behavior-phabricator-transaction-comment-form' =>
   array(
     'uri' => '/res/acc3ada1/rsrc/js/application/transactions/behavior-transaction-comment-form.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/transactions/behavior-transaction-comment-form.js',
   ),
   'javelin-behavior-phabricator-transaction-list' =>
   array(
     'uri' => '/res/f1fbb474/rsrc/js/application/transactions/behavior-transaction-list.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-workflow',
       3 => 'javelin-dom',
       4 => 'javelin-fx',
     ),
     'disk' => '/rsrc/js/application/transactions/behavior-transaction-list.js',
   ),
   'javelin-behavior-phabricator-watch-anchor' =>
   array(
     'uri' => '/res/69a90817/rsrc/js/core/behavior-watch-anchor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/core/behavior-watch-anchor.js',
   ),
   'javelin-behavior-phame-post-preview' =>
   array(
     'uri' => '/res/ac4c503a/rsrc/js/application/phame/phame-post-preview.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/phame/phame-post-preview.js',
   ),
   'javelin-behavior-pholio-mock-view' =>
   array(
     'uri' => '/res/ecf5f969/rsrc/js/application/pholio/behavior-pholio-mock-view.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
       3 => 'javelin-dom',
       4 => 'javelin-vector',
       5 => 'javelin-magical-init',
       6 => 'javelin-request',
       7 => 'javelin-history',
       8 => 'javelin-workflow',
       9 => 'javelin-mask',
       10 => 'javelin-behavior-device',
       11 => 'phabricator-keyboard-shortcut',
     ),
     'disk' => '/rsrc/js/application/pholio/behavior-pholio-mock-view.js',
   ),
   'javelin-behavior-phriction-document-preview' =>
   array(
     'uri' => '/res/f1665ecd/rsrc/js/application/phriction/phriction-document-preview.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/phriction/phriction-document-preview.js',
   ),
   'javelin-behavior-ponder-feedback-preview' =>
   array(
     'uri' => '/res/2e802dd9/rsrc/js/application/ponder/behavior-comment-preview.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'phabricator-shaped-request',
     ),
     'disk' => '/rsrc/js/application/ponder/behavior-comment-preview.js',
   ),
   'javelin-behavior-ponder-votebox' =>
   array(
     'uri' => '/res/9d091af3/rsrc/js/application/ponder/behavior-votebox.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-util',
       3 => 'javelin-stratcom',
       4 => 'javelin-request',
     ),
     'disk' => '/rsrc/js/application/ponder/behavior-votebox.js',
   ),
   'javelin-behavior-project-create' =>
   array(
     'uri' => '/res/e91f3f8f/rsrc/js/application/projects/behavior-project-create.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'javelin-workflow',
     ),
     'disk' => '/rsrc/js/application/projects/behavior-project-create.js',
   ),
   'javelin-behavior-refresh-csrf' =>
   array(
     'uri' => '/res/424ccc57/rsrc/js/core/behavior-refresh-csrf.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-request',
       1 => 'javelin-behavior',
       2 => 'javelin-dom',
       3 => 'phabricator-busy',
     ),
     'disk' => '/rsrc/js/core/behavior-refresh-csrf.js',
   ),
   'javelin-behavior-releeph-preview-branch' =>
   array(
     'uri' => '/res/a77ebc86/rsrc/js/application/releeph/releeph-preview-branch.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'javelin-uri',
       4 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/application/releeph/releeph-preview-branch.js',
   ),
   'javelin-behavior-releeph-request-state-change' =>
   array(
     'uri' => '/res/38f96ba8/rsrc/js/application/releeph/releeph-request-state-change.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'javelin-util',
       4 => 'phabricator-keyboard-shortcut',
       5 => 'phabricator-notification',
     ),
     'disk' => '/rsrc/js/application/releeph/releeph-request-state-change.js',
   ),
   'javelin-behavior-releeph-request-typeahead' =>
   array(
     'uri' => '/res/b52096e2/rsrc/js/application/releeph/releeph-request-typeahead.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-util',
       2 => 'javelin-dom',
       3 => 'javelin-typeahead',
       4 => 'javelin-tokenizer',
       5 => 'javelin-typeahead-preloaded-source',
       6 => 'javelin-typeahead-ondemand-source',
       7 => 'javelin-dom',
       8 => 'javelin-stratcom',
       9 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/application/releeph/releeph-request-typeahead.js',
   ),
   'javelin-behavior-repository-crossreference' =>
   array(
     'uri' => '/res/4b5fab1c/rsrc/js/application/repository/repository-crossreference.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'javelin-uri',
     ),
     'disk' => '/rsrc/js/application/repository/repository-crossreference.js',
   ),
   'javelin-behavior-slowvote-embed' =>
   array(
     'uri' => '/res/eef0818f/rsrc/js/application/slowvote/behavior-slowvote-embed.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
       3 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/slowvote/behavior-slowvote-embed.js',
   ),
   'javelin-behavior-stripe-payment-form' =>
   array(
     'uri' => '/res/c1a12d77/rsrc/js/application/phortune/behavior-stripe-payment-form.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'phortune-credit-card-form',
     ),
     'disk' => '/rsrc/js/application/phortune/behavior-stripe-payment-form.js',
   ),
   'javelin-behavior-test-payment-form' =>
   array(
     'uri' => '/res/a8fe8616/rsrc/js/application/phortune/behavior-test-payment-form.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'phortune-credit-card-form',
     ),
     'disk' => '/rsrc/js/application/phortune/behavior-test-payment-form.js',
   ),
   'javelin-behavior-toggle-class' =>
   array(
     'uri' => '/res/79921b7f/rsrc/js/core/behavior-toggle-class.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-toggle-class.js',
   ),
   'javelin-behavior-view-placeholder' =>
   array(
     'uri' => '/res/faaf0af7/rsrc/externals/javelin/ext/view/ViewPlaceholder.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-dom',
       2 => 'javelin-view-renderer',
     ),
     'disk' => '/rsrc/externals/javelin/ext/view/ViewPlaceholder.js',
   ),
   'javelin-behavior-workflow' =>
   array(
     'uri' => '/res/425777cc/rsrc/js/core/behavior-workflow.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-behavior',
       1 => 'javelin-stratcom',
       2 => 'javelin-workflow',
       3 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/behavior-workflow.js',
   ),
   'javelin-color' =>
   array(
     'uri' => '/res/f17034de/rsrc/externals/javelin/ext/fx/Color.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
     ),
     'disk' => '/rsrc/externals/javelin/ext/fx/Color.js',
   ),
   'javelin-cookie' =>
   array(
     'uri' => '/res/ee0d399f/rsrc/externals/javelin/lib/Cookie.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/lib/Cookie.js',
   ),
   'javelin-dom' =>
   array(
     'uri' => '/res/64689b54/rsrc/externals/javelin/lib/DOM.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-magical-init',
       1 => 'javelin-install',
       2 => 'javelin-util',
       3 => 'javelin-vector',
       4 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/externals/javelin/lib/DOM.js',
   ),
   'javelin-dynval' =>
   array(
     'uri' => '/res/ea6f2a9d/rsrc/externals/javelin/ext/reactor/core/DynVal.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-reactornode',
       2 => 'javelin-util',
       3 => 'javelin-reactor',
     ),
     'disk' => '/rsrc/externals/javelin/ext/reactor/core/DynVal.js',
   ),
   'javelin-event' =>
   array(
     'uri' => '/res/0a4efce8/rsrc/externals/javelin/core/Event.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
     ),
     'disk' => '/rsrc/externals/javelin/core/Event.js',
   ),
   'javelin-fx' =>
   array(
     'uri' => '/res/c7cefec3/rsrc/externals/javelin/ext/fx/FX.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-color',
       1 => 'javelin-install',
       2 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/ext/fx/FX.js',
   ),
   'javelin-history' =>
   array(
     'uri' => '/res/6c084b09/rsrc/externals/javelin/lib/History.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-stratcom',
       1 => 'javelin-install',
       2 => 'javelin-uri',
       3 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/lib/History.js',
   ),
   'javelin-install' =>
   array(
     'uri' => '/res/904356c0/rsrc/externals/javelin/core/install.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-util',
       1 => 'javelin-magical-init',
     ),
     'disk' => '/rsrc/externals/javelin/core/install.js',
   ),
   'javelin-json' =>
   array(
     'uri' => '/res/cf83e72c/rsrc/externals/javelin/lib/JSON.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
     ),
     'disk' => '/rsrc/externals/javelin/lib/JSON.js',
   ),
   'javelin-magical-init' =>
   array(
     'uri' => '/res/7af6987f/rsrc/externals/javelin/core/init.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/externals/javelin/core/init.js',
   ),
   'javelin-mask' =>
   array(
     'uri' => '/res/5c40c29f/rsrc/externals/javelin/lib/Mask.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
     ),
     'disk' => '/rsrc/externals/javelin/lib/Mask.js',
   ),
   'javelin-reactor' =>
   array(
     'uri' => '/res/c05f2658/rsrc/externals/javelin/ext/reactor/core/Reactor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/ext/reactor/core/Reactor.js',
   ),
   'javelin-reactor-dom' =>
   array(
     'uri' => '/res/477f5d3b/rsrc/externals/javelin/ext/reactor/dom/RDOM.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-dom',
       1 => 'javelin-dynval',
       2 => 'javelin-reactornode',
       3 => 'javelin-install',
       4 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/ext/reactor/dom/RDOM.js',
   ),
   'javelin-reactor-node-calmer' =>
   array(
     'uri' => '/res/a93dd6b6/rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-reactor',
       2 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js',
   ),
   'javelin-reactornode' =>
   array(
     'uri' => '/res/4eac475b/rsrc/externals/javelin/ext/reactor/core/ReactorNode.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-reactor',
       2 => 'javelin-util',
       3 => 'javelin-reactor-node-calmer',
     ),
     'disk' => '/rsrc/externals/javelin/ext/reactor/core/ReactorNode.js',
   ),
   'javelin-request' =>
   array(
     'uri' => '/res/a9fbc4ae/rsrc/externals/javelin/lib/Request.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-stratcom',
       2 => 'javelin-util',
       3 => 'javelin-behavior',
       4 => 'javelin-json',
       5 => 'javelin-dom',
       6 => 'javelin-resource',
     ),
     'disk' => '/rsrc/externals/javelin/lib/Request.js',
   ),
   'javelin-resource' =>
   array(
     'uri' => '/res/1020e732/rsrc/externals/javelin/lib/Resource.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-magical-init',
       1 => 'javelin-stratcom',
       2 => 'javelin-util',
       3 => 'javelin-uri',
     ),
     'disk' => '/rsrc/externals/javelin/lib/Resource.js',
   ),
   'javelin-stratcom' =>
   array(
     'uri' => '/res/714946e7/rsrc/externals/javelin/core/Stratcom.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-event',
       2 => 'javelin-util',
       3 => 'javelin-magical-init',
     ),
     'disk' => '/rsrc/externals/javelin/core/Stratcom.js',
   ),
   'javelin-tokenizer' =>
   array(
     'uri' => '/res/2c55cb68/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-dom',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
       3 => 'javelin-install',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js',
   ),
   'javelin-typeahead' =>
   array(
     'uri' => '/res/fd79f758/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
       2 => 'javelin-vector',
       3 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js',
   ),
   'javelin-typeahead-composite-source' =>
   array(
     'uri' => '/res/487b3da2/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-typeahead-source',
       2 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js',
   ),
   'javelin-typeahead-normalizer' =>
   array(
     'uri' => '/res/5a4bd979/rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js',
   ),
   'javelin-typeahead-ondemand-source' =>
   array(
     'uri' => '/res/9ab98c3d/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
       3 => 'javelin-request',
       4 => 'javelin-typeahead-source',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js',
   ),
   'javelin-typeahead-preloaded-source' =>
   array(
     'uri' => '/res/ffc234d1/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
       3 => 'javelin-request',
       4 => 'javelin-typeahead-source',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js',
   ),
   'javelin-typeahead-source' =>
   array(
     'uri' => '/res/df206a51/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-dom',
       3 => 'javelin-typeahead-normalizer',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js',
   ),
   'javelin-typeahead-static-source' =>
   array(
     'uri' => '/res/bb0a5173/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-typeahead-source',
     ),
     'disk' => '/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js',
   ),
   'javelin-uri' =>
   array(
     'uri' => '/res/a1e5cbb3/rsrc/externals/javelin/lib/URI.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
     ),
     'disk' => '/rsrc/externals/javelin/lib/URI.js',
   ),
   'javelin-util' =>
   array(
     'uri' => '/res/322fc289/rsrc/externals/javelin/core/util.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/externals/javelin/core/util.js',
   ),
   'javelin-vector' =>
   array(
     'uri' => '/res/c8c64ab7/rsrc/externals/javelin/lib/Vector.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-event',
     ),
     'disk' => '/rsrc/externals/javelin/lib/Vector.js',
   ),
   'javelin-view' =>
   array(
     'uri' => '/res/3022e596/rsrc/externals/javelin/ext/view/View.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/ext/view/View.js',
   ),
   'javelin-view-html' =>
   array(
     'uri' => '/res/1b6e621c/rsrc/externals/javelin/ext/view/HTMLView.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
     ),
     'disk' => '/rsrc/externals/javelin/ext/view/HTMLView.js',
   ),
   'javelin-view-interpreter' =>
   array(
     'uri' => '/res/39fe3ad3/rsrc/externals/javelin/ext/view/ViewInterpreter.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-view',
       1 => 'javelin-install',
     ),
     'disk' => '/rsrc/externals/javelin/ext/view/ViewInterpreter.js',
   ),
   'javelin-view-renderer' =>
   array(
     'uri' => '/res/d2119b79/rsrc/externals/javelin/ext/view/ViewRenderer.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
     ),
     'disk' => '/rsrc/externals/javelin/ext/view/ViewRenderer.js',
   ),
   'javelin-view-visitor' =>
   array(
     'uri' => '/res/b1606cec/rsrc/externals/javelin/ext/view/ViewVisitor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
     ),
     'disk' => '/rsrc/externals/javelin/ext/view/ViewVisitor.js',
   ),
   'javelin-workflow' =>
   array(
     'uri' => '/res/73e8d0e2/rsrc/externals/javelin/lib/Workflow.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-stratcom',
       1 => 'javelin-request',
       2 => 'javelin-dom',
       3 => 'javelin-vector',
       4 => 'javelin-install',
       5 => 'javelin-util',
       6 => 'javelin-mask',
       7 => 'javelin-uri',
     ),
     'disk' => '/rsrc/externals/javelin/lib/Workflow.js',
   ),
   'lightbox-attachment-css' =>
   array(
     'uri' => '/res/4657e15d/rsrc/css/aphront/lightbox-attachment.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/lightbox-attachment.css',
   ),
   'maniphest-batch-editor' =>
   array(
     'uri' => '/res/fb15d744/rsrc/css/application/maniphest/batch-editor.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/maniphest/batch-editor.css',
   ),
   'maniphest-report-css' =>
   array(
     'uri' => '/res/2e633fcf/rsrc/css/application/maniphest/report.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/maniphest/report.css',
   ),
   'maniphest-task-edit-css' =>
   array(
     'uri' => '/res/0760f768/rsrc/css/application/maniphest/task-edit.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/maniphest/task-edit.css',
   ),
   'maniphest-task-summary-css' =>
   array(
     'uri' => '/res/7aa9e2eb/rsrc/css/application/maniphest/task-summary.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/maniphest/task-summary.css',
   ),
   'maniphest-transaction-detail-css' =>
   array(
     'uri' => '/res/fb430d3e/rsrc/css/application/maniphest/transaction-detail.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/maniphest/transaction-detail.css',
   ),
   'multirow-row-manager' =>
   array(
     'uri' => '/res/408fae4f/rsrc/js/core/MultirowRowManager.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-stratcom',
       2 => 'javelin-dom',
       3 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/core/MultirowRowManager.js',
   ),
   'owners-path-editor' =>
   array(
     'uri' => '/res/29b68354/rsrc/js/application/owners/OwnersPathEditor.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'multirow-row-manager',
       1 => 'javelin-install',
       2 => 'path-typeahead',
       3 => 'javelin-dom',
       4 => 'javelin-util',
       5 => 'phabricator-prefab',
     ),
     'disk' => '/rsrc/js/application/owners/OwnersPathEditor.js',
   ),
   'owners-path-editor-css' =>
   array(
     'uri' => '/res/1b9b5456/rsrc/css/application/owners/owners-path-editor.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/owners/owners-path-editor.css',
   ),
   'paste-css' =>
   array(
     'uri' => '/res/216fbfe9/rsrc/css/application/paste/paste.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/paste/paste.css',
   ),
   'path-typeahead' =>
   array(
     'uri' => '/res/50246fb6/rsrc/js/application/herald/PathTypeahead.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-typeahead',
       2 => 'javelin-dom',
       3 => 'javelin-request',
       4 => 'javelin-typeahead-ondemand-source',
       5 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/application/herald/PathTypeahead.js',
   ),
   'phabricator-action-header-view-css' =>
   array(
-    'uri' => '/res/948f998b/rsrc/css/layout/phabricator-action-header-view.css',
+    'uri' => '/res/3b701648/rsrc/css/layout/phabricator-action-header-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-action-header-view.css',
   ),
   'phabricator-action-list-view-css' =>
   array(
     'uri' => '/res/f63afae7/rsrc/css/layout/phabricator-action-list-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-action-list-view.css',
   ),
   'phabricator-application-launch-view-css' =>
   array(
     'uri' => '/res/b04e66e6/rsrc/css/application/base/phabricator-application-launch-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/base/phabricator-application-launch-view.css',
   ),
   'phabricator-busy' =>
   array(
     'uri' => '/res/8e3f036d/rsrc/js/core/Busy.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/Busy.js',
   ),
   'phabricator-chatlog-css' =>
   array(
     'uri' => '/res/5542e247/rsrc/css/application/chatlog/chatlog.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/chatlog/chatlog.css',
   ),
   'phabricator-content-source-view-css' =>
   array(
     'uri' => '/res/8c738a93/rsrc/css/application/contentsource/content-source-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/contentsource/content-source-view.css',
   ),
   'phabricator-core-buttons-css' =>
   array(
     'uri' => '/res/da2e42df/rsrc/css/core/buttons.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/core/buttons.css',
   ),
   'phabricator-core-css' =>
   array(
     'uri' => '/res/dc204369/rsrc/css/core/core.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/core/core.css',
   ),
   'phabricator-countdown-css' =>
   array(
     'uri' => '/res/0f646281/rsrc/css/application/countdown/timer.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/countdown/timer.css',
   ),
   'phabricator-crumbs-view-css' =>
   array(
-    'uri' => '/res/31ef131e/rsrc/css/layout/phabricator-crumbs-view.css',
+    'uri' => '/res/feeb02f0/rsrc/css/layout/phabricator-crumbs-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-crumbs-view.css',
   ),
   'phabricator-directory-css' =>
   array(
     'uri' => '/res/61afca2b/rsrc/css/application/directory/phabricator-directory.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/directory/phabricator-directory.css',
   ),
   'phabricator-drag-and-drop-file-upload' =>
   array(
     'uri' => '/res/3991c1b6/rsrc/js/core/DragAndDropFileUpload.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-request',
       3 => 'javelin-dom',
       4 => 'javelin-uri',
       5 => 'phabricator-file-upload',
     ),
     'disk' => '/rsrc/js/core/DragAndDropFileUpload.js',
   ),
   'phabricator-dropdown-menu' =>
   array(
     'uri' => '/res/efe00353/rsrc/js/core/DropdownMenu.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-dom',
       3 => 'javelin-vector',
       4 => 'javelin-stratcom',
       5 => 'phabricator-menu-item',
     ),
     'disk' => '/rsrc/js/core/DropdownMenu.js',
   ),
   'phabricator-fatal-config-template-css' =>
   array(
     'uri' => '/res/6e1a8d22/rsrc/css/application/config/config-template.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/config/config-template.css',
   ),
   'phabricator-feed-css' =>
   array(
     'uri' => '/res/f3e6e80b/rsrc/css/application/feed/feed.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/feed/feed.css',
   ),
   'phabricator-file-upload' =>
   array(
     'uri' => '/res/ee9664fd/rsrc/js/core/FileUpload.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
       2 => 'phabricator-notification',
     ),
     'disk' => '/rsrc/js/core/FileUpload.js',
   ),
   'phabricator-filetree-view-css' =>
   array(
     'uri' => '/res/c912ed91/rsrc/css/layout/phabricator-filetree-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-filetree-view.css',
   ),
   'phabricator-flag-css' =>
   array(
     'uri' => '/res/237234d7/rsrc/css/application/flag/flag.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/flag/flag.css',
   ),
   'phabricator-form-view-css' =>
   array(
     'uri' => '/res/ba05f8ba/rsrc/css/layout/phabricator-form-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-form-view.css',
   ),
   'phabricator-header-view-css' =>
   array(
     'uri' => '/res/585b771c/rsrc/css/layout/phabricator-header-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-header-view.css',
   ),
   'phabricator-hovercard' =>
   array(
     'uri' => '/res/2cf2c195/rsrc/js/core/Hovercard.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
       2 => 'javelin-vector',
       3 => 'javelin-request',
       4 => 'javelin-uri',
     ),
     'disk' => '/rsrc/js/core/Hovercard.js',
   ),
   'phabricator-hovercard-view-css' =>
   array(
     'uri' => '/res/80683f88/rsrc/css/layout/phabricator-hovercard-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-hovercard-view.css',
   ),
   'phabricator-jump-nav' =>
   array(
     'uri' => '/res/37ab43b8/rsrc/css/application/directory/phabricator-jump-nav.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/directory/phabricator-jump-nav.css',
   ),
   'phabricator-keyboard-shortcut' =>
   array(
     'uri' => '/res/44747afd/rsrc/js/core/KeyboardShortcut.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'phabricator-keyboard-shortcut-manager',
     ),
     'disk' => '/rsrc/js/core/KeyboardShortcut.js',
   ),
   'phabricator-keyboard-shortcut-manager' =>
   array(
     'uri' => '/res/bf9bc02a/rsrc/js/core/KeyboardShortcutManager.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-stratcom',
       3 => 'javelin-dom',
       4 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/core/KeyboardShortcutManager.js',
   ),
   'phabricator-main-menu-view' =>
   array(
     'uri' => '/res/f4cfb781/rsrc/css/application/base/main-menu-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/base/main-menu-view.css',
   ),
   'phabricator-menu-item' =>
   array(
     'uri' => '/res/2add4594/rsrc/js/core/DropdownMenuItem.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/core/DropdownMenuItem.js',
   ),
   'phabricator-nav-view-css' =>
   array(
     'uri' => '/res/fb026f2e/rsrc/css/aphront/phabricator-nav-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/phabricator-nav-view.css',
   ),
   'phabricator-notification' =>
   array(
     'uri' => '/res/0764da14/rsrc/js/core/Notification.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
       2 => 'javelin-stratcom',
       3 => 'javelin-util',
       4 => 'phabricator-notification-css',
     ),
     'disk' => '/rsrc/js/core/Notification.js',
   ),
   'phabricator-notification-css' =>
   array(
     'uri' => '/res/664b9bec/rsrc/css/aphront/notification.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/notification.css',
   ),
   'phabricator-notification-menu-css' =>
   array(
     'uri' => '/res/bc245b67/rsrc/css/application/base/notification-menu.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/base/notification-menu.css',
   ),
   'phabricator-object-item-list-view-css' =>
   array(
-    'uri' => '/res/439ecf73/rsrc/css/layout/phabricator-object-item-list-view.css',
+    'uri' => '/res/f3038925/rsrc/css/layout/phabricator-object-item-list-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-object-item-list-view.css',
   ),
   'phabricator-object-list-view-css' =>
   array(
     'uri' => '/res/4f183668/rsrc/css/application/projects/phabricator-object-list-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/projects/phabricator-object-list-view.css',
   ),
   'phabricator-object-selector-css' =>
   array(
     'uri' => '/res/502f1bb9/rsrc/css/application/objectselector/object-selector.css',
     'type' => 'css',
     'requires' =>
     array(
       0 => 'aphront-dialog-view-css',
     ),
     'disk' => '/rsrc/css/application/objectselector/object-selector.css',
   ),
   'phabricator-phtize' =>
   array(
     'uri' => '/res/50a80ff1/rsrc/js/core/phtize.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/core/phtize.js',
   ),
   'phabricator-pinboard-view-css' =>
   array(
     'uri' => '/res/61ecd7cf/rsrc/css/layout/phabricator-pinboard-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-pinboard-view.css',
   ),
   'phabricator-prefab' =>
   array(
     'uri' => '/res/513c4313/rsrc/js/core/Prefab.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-dom',
       3 => 'javelin-typeahead',
       4 => 'javelin-tokenizer',
       5 => 'javelin-typeahead-preloaded-source',
       6 => 'javelin-typeahead-ondemand-source',
       7 => 'javelin-dom',
       8 => 'javelin-stratcom',
       9 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/core/Prefab.js',
   ),
   'phabricator-profile-css' =>
   array(
     'uri' => '/res/87229261/rsrc/css/application/profile/profile-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/profile/profile-view.css',
   ),
   'phabricator-profile-header-css' =>
   array(
     'uri' => '/res/a03c1e20/rsrc/css/application/profile/profile-header-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/profile/profile-header-view.css',
   ),
   'phabricator-project-tag-css' =>
   array(
     'uri' => '/res/1b5efcb2/rsrc/css/application/projects/project-tag.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/projects/project-tag.css',
   ),
   'phabricator-property-list-view-css' =>
   array(
     'uri' => '/res/a04cc81d/rsrc/css/layout/phabricator-property-list-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-property-list-view.css',
   ),
   'phabricator-remarkup-css' =>
   array(
     'uri' => '/res/07cab525/rsrc/css/core/remarkup.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/core/remarkup.css',
   ),
   'phabricator-search-results-css' =>
   array(
     'uri' => '/res/9b749d7d/rsrc/css/application/search/search-results.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/search/search-results.css',
   ),
   'phabricator-settings-css' =>
   array(
     'uri' => '/res/fb9d017f/rsrc/css/application/settings/settings.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/settings/settings.css',
   ),
   'phabricator-shaped-request' =>
   array(
     'uri' => '/res/d173af85/rsrc/js/core/ShapedRequest.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-request',
     ),
     'disk' => '/rsrc/js/core/ShapedRequest.js',
   ),
   'phabricator-side-menu-view-css' =>
   array(
     'uri' => '/res/28a1e092/rsrc/css/layout/phabricator-side-menu-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-side-menu-view.css',
   ),
   'phabricator-slowvote-css' =>
   array(
     'uri' => '/res/d1c2e05a/rsrc/css/application/slowvote/slowvote.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/slowvote/slowvote.css',
   ),
   'phabricator-source-code-view-css' =>
   array(
     'uri' => '/res/979d5280/rsrc/css/layout/phabricator-source-code-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-source-code-view.css',
   ),
   'phabricator-standard-page-view' =>
   array(
     'uri' => '/res/70fa2da4/rsrc/css/application/base/standard-page-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/base/standard-page-view.css',
   ),
   'phabricator-tag-view-css' =>
   array(
     'uri' => '/res/e10bf844/rsrc/css/layout/phabricator-tag-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-tag-view.css',
   ),
   'phabricator-textareautils' =>
   array(
     'uri' => '/res/03c03e8b/rsrc/js/core/TextAreaUtils.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
     ),
     'disk' => '/rsrc/js/core/TextAreaUtils.js',
   ),
   'phabricator-timeline-view-css' =>
   array(
     'uri' => '/res/5517bf1a/rsrc/css/layout/phabricator-timeline-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-timeline-view.css',
   ),
   'phabricator-tooltip' =>
   array(
     'uri' => '/res/1dc73d91/rsrc/js/core/ToolTip.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-util',
       2 => 'javelin-dom',
       3 => 'javelin-vector',
     ),
     'disk' => '/rsrc/js/core/ToolTip.js',
   ),
   'phabricator-transaction-view-css' =>
   array(
     'uri' => '/res/00be4b1a/rsrc/css/aphront/transaction.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/aphront/transaction.css',
   ),
   'phabricator-ui-example-css' =>
   array(
     'uri' => '/res/376ab671/rsrc/css/application/uiexample/example.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/uiexample/example.css',
   ),
   'phabricator-uiexample-javelin-view' =>
   array(
     'uri' => '/res/a2ce2cfc/rsrc/js/application/uiexample/JavelinViewExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/JavelinViewExample.js',
   ),
   'phabricator-uiexample-reactor-button' =>
   array(
     'uri' => '/res/142127f6/rsrc/js/application/uiexample/ReactorButtonExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorButtonExample.js',
   ),
   'phabricator-uiexample-reactor-checkbox' =>
   array(
     'uri' => '/res/c75cb9e9/rsrc/js/application/uiexample/ReactorCheckboxExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorCheckboxExample.js',
   ),
   'phabricator-uiexample-reactor-focus' =>
   array(
     'uri' => '/res/3cc992eb/rsrc/js/application/uiexample/ReactorFocusExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorFocusExample.js',
   ),
   'phabricator-uiexample-reactor-input' =>
   array(
     'uri' => '/res/4953da16/rsrc/js/application/uiexample/ReactorInputExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
       5 => 'javelin-view-html',
       6 => 'javelin-view-interpreter',
       7 => 'javelin-view-renderer',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorInputExample.js',
   ),
   'phabricator-uiexample-reactor-mouseover' =>
   array(
     'uri' => '/res/52a355b6/rsrc/js/application/uiexample/ReactorMouseoverExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorMouseoverExample.js',
   ),
   'phabricator-uiexample-reactor-radio' =>
   array(
     'uri' => '/res/ae87f3af/rsrc/js/application/uiexample/ReactorRadioExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorRadioExample.js',
   ),
   'phabricator-uiexample-reactor-select' =>
   array(
     'uri' => '/res/23cb448a/rsrc/js/application/uiexample/ReactorSelectExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorSelectExample.js',
   ),
   'phabricator-uiexample-reactor-sendclass' =>
   array(
     'uri' => '/res/8cd34264/rsrc/js/application/uiexample/ReactorSendClassExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorSendClassExample.js',
   ),
   'phabricator-uiexample-reactor-sendproperties' =>
   array(
     'uri' => '/res/18af54aa/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-view',
       2 => 'javelin-util',
       3 => 'javelin-dom',
       4 => 'javelin-reactor-dom',
     ),
     'disk' => '/rsrc/js/application/uiexample/ReactorSendPropertiesExample.js',
   ),
   'phabricator-workboard-view-css' =>
   array(
-    'uri' => '/res/e48df9e8/rsrc/css/layout/phabricator-workboard-view.css',
+    'uri' => '/res/f598d215/rsrc/css/layout/phabricator-workboard-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-workboard-view.css',
   ),
   'phabricator-workpanel-view-css' =>
   array(
     'uri' => '/res/ff5d5b26/rsrc/css/layout/phabricator-workpanel-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/layout/phabricator-workpanel-view.css',
   ),
   'phabricator-zindex-css' =>
   array(
     'uri' => '/res/d4048e34/rsrc/css/core/z-index.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/core/z-index.css',
   ),
   'phame-css' =>
   array(
     'uri' => '/res/8e3edb71/rsrc/css/application/phame/phame.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/phame/phame.css',
   ),
   'pholio-css' =>
   array(
     'uri' => '/res/0daaf1ca/rsrc/css/application/pholio/pholio.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/pholio/pholio.css',
   ),
   'pholio-inline-comments-css' =>
   array(
     'uri' => '/res/006fc575/rsrc/css/application/pholio/pholio-inline-comments.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/pholio/pholio-inline-comments.css',
   ),
   'phortune-credit-card-form' =>
   array(
     'uri' => '/res/bc948778/rsrc/js/application/phortune/phortune-credit-card-form.js',
     'type' => 'js',
     'requires' =>
     array(
       0 => 'javelin-install',
       1 => 'javelin-dom',
       2 => 'javelin-json',
       3 => 'javelin-workflow',
       4 => 'javelin-util',
     ),
     'disk' => '/rsrc/js/application/phortune/phortune-credit-card-form.js',
   ),
   'phortune-credit-card-form-css' =>
   array(
     'uri' => '/res/563c8c6d/rsrc/css/application/phortune/phortune-credit-card-form.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/phortune/phortune-credit-card-form.css',
   ),
   'phrequent-css' =>
   array(
     'uri' => '/res/9d6f3eb7/rsrc/css/application/phrequent/phrequent.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/phrequent/phrequent.css',
   ),
   'phriction-document-css' =>
   array(
     'uri' => '/res/cc6cefba/rsrc/css/application/phriction/phriction-document-css.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/phriction/phriction-document-css.css',
   ),
   'phui-box-css' =>
   array(
     'uri' => '/res/1b741073/rsrc/css/phui/phui-box.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/phui/phui-box.css',
   ),
   'phui-feed-story-css' =>
   array(
-    'uri' => '/res/d6ccc638/rsrc/css/phui/phui-feed-story.css',
+    'uri' => '/res/2fb3c729/rsrc/css/phui/phui-feed-story.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/phui/phui-feed-story.css',
   ),
   'phui-form-css' =>
   array(
     'uri' => '/res/86916b69/rsrc/css/phui/phui-form.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/phui/phui-form.css',
   ),
   'phui-icon-view-css' =>
   array(
-    'uri' => '/res/2aa71cc6/rsrc/css/phui/phui-icon.css',
+    'uri' => '/res/1b1a37b5/rsrc/css/phui/phui-icon.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/phui/phui-icon.css',
   ),
   'phui-text-css' =>
   array(
     'uri' => '/res/ca884ca6/rsrc/css/phui/phui-text.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/phui/phui-text.css',
   ),
   'ponder-comment-table-css' =>
   array(
     'uri' => '/res/a1bb9056/rsrc/css/application/ponder/comments.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/ponder/comments.css',
   ),
   'ponder-core-view-css' =>
   array(
     'uri' => '/res/3a2d5e18/rsrc/css/application/ponder/core.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/ponder/core.css',
   ),
   'ponder-feed-view-css' =>
   array(
     'uri' => '/res/df22bd20/rsrc/css/application/ponder/feed.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/ponder/feed.css',
   ),
   'ponder-post-css' =>
   array(
     'uri' => '/res/013b9e2c/rsrc/css/application/ponder/post.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/ponder/post.css',
   ),
   'ponder-vote-css' =>
   array(
     'uri' => '/res/ea8316c2/rsrc/css/application/ponder/vote.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/ponder/vote.css',
   ),
   'raphael-core' =>
   array(
     'uri' => '/res/0939b925/rsrc/externals/raphael/raphael.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/externals/raphael/raphael.js',
   ),
   'raphael-g' =>
   array(
     'uri' => '/res/e14432ce/rsrc/externals/raphael/g.raphael.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/externals/raphael/g.raphael.js',
   ),
   'raphael-g-line' =>
   array(
     'uri' => '/res/2c9e6746/rsrc/externals/raphael/g.raphael.line.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/externals/raphael/g.raphael.line.js',
   ),
   'releeph-branch' =>
   array(
     'uri' => '/res/6ad6420d/rsrc/css/application/releeph/releeph-branch.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-branch.css',
   ),
   'releeph-colors' =>
   array(
     'uri' => '/res/dff4b26a/rsrc/css/application/releeph/releeph-colors.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-colors.css',
   ),
   'releeph-core' =>
   array(
     'uri' => '/res/853f4a73/rsrc/css/application/releeph/releeph-core.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-core.css',
   ),
   'releeph-intents' =>
   array(
     'uri' => '/res/4e73e9dd/rsrc/css/application/releeph/releeph-intents.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-intents.css',
   ),
   'releeph-preview-branch' =>
   array(
     'uri' => '/res/65e5dece/rsrc/css/application/releeph/releeph-preview-branch.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-preview-branch.css',
   ),
   'releeph-project' =>
   array(
     'uri' => '/res/b9376e59/rsrc/css/application/releeph/releeph-project.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-project.css',
   ),
   'releeph-request-differential-create-dialog' =>
   array(
     'uri' => '/res/4df30ce1/rsrc/css/application/releeph/releeph-request-differential-create-dialog.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-request-differential-create-dialog.css',
   ),
   'releeph-request-typeahead-css' =>
   array(
     'uri' => '/res/9c9a1acf/rsrc/css/application/releeph/releeph-request-typeahead.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-request-typeahead.css',
   ),
   'releeph-status' =>
   array(
     'uri' => '/res/588529df/rsrc/css/application/releeph/releeph-status.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/releeph/releeph-status.css',
   ),
   'setup-issue-css' =>
   array(
     'uri' => '/res/efbb3673/rsrc/css/application/config/setup-issue.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/config/setup-issue.css',
   ),
   'spacing-css' =>
   array(
     'uri' => '/res/59e4c9b1/rsrc/css/core/spacing.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/core/spacing.css',
   ),
   'sprite-actions-css' =>
   array(
-    'uri' => '/res/1f670307/rsrc/css/sprite-actions.css',
+    'uri' => '/res/bd43efa8/rsrc/css/sprite-actions.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-actions.css',
   ),
   'sprite-apps-css' =>
   array(
     'uri' => '/res/edc99ce1/rsrc/css/sprite-apps.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-apps.css',
   ),
   'sprite-apps-large-css' =>
   array(
     'uri' => '/res/40397d93/rsrc/css/sprite-apps-large.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-apps-large.css',
   ),
   'sprite-apps-xlarge-css' =>
   array(
     'uri' => '/res/33a8e644/rsrc/css/sprite-apps-xlarge.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-apps-xlarge.css',
   ),
   'sprite-conpherence-css' =>
   array(
     'uri' => '/res/f6793453/rsrc/css/sprite-conpherence.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-conpherence.css',
   ),
   'sprite-docs-css' =>
   array(
     'uri' => '/res/b32f93bc/rsrc/css/sprite-docs.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-docs.css',
   ),
   'sprite-gradient-css' =>
   array(
     'uri' => '/res/fdc4dd44/rsrc/css/sprite-gradient.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-gradient.css',
   ),
-  'sprite-icon-css' =>
+  'sprite-icons-css' =>
   array(
-    'uri' => '/res/8261da31/rsrc/css/sprite-icon.css',
+    'uri' => '/res/cc45e87c/rsrc/css/sprite-icons.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
-    'disk' => '/rsrc/css/sprite-icon.css',
+    'disk' => '/rsrc/css/sprite-icons.css',
   ),
   'sprite-menu-css' =>
   array(
     'uri' => '/res/e4e428f9/rsrc/css/sprite-menu.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-menu.css',
   ),
   'sprite-minicons-css' =>
   array(
     'uri' => '/res/2dba70cd/rsrc/css/sprite-minicons.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-minicons.css',
   ),
   'sprite-payments-css' =>
   array(
     'uri' => '/res/876697b6/rsrc/css/sprite-payments.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-payments.css',
   ),
   'sprite-tokens-css' =>
   array(
     'uri' => '/res/edb4e341/rsrc/css/sprite-tokens.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/sprite-tokens.css',
   ),
   'syntax-highlighting-css' =>
   array(
     'uri' => '/res/cb3b9dc0/rsrc/css/core/syntax.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/core/syntax.css',
   ),
   'tokens-css' =>
   array(
     'uri' => '/res/1699df7d/rsrc/css/application/tokens/tokens.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
     'disk' => '/rsrc/css/application/tokens/tokens.css',
   ),
 ), array(
   'packages' =>
   array(
-    'aede25c4' =>
+    'd4935661' =>
     array(
       'name' => 'core.pkg.css',
       'symbols' =>
       array(
         0 => 'phabricator-core-css',
         1 => 'phabricator-zindex-css',
         2 => 'phabricator-core-buttons-css',
         3 => 'phabricator-standard-page-view',
         4 => 'aphront-dialog-view-css',
         5 => 'aphront-form-view-css',
         6 => 'aphront-panel-view-css',
         7 => 'aphront-table-view-css',
         8 => 'aphront-tokenizer-control-css',
         9 => 'aphront-typeahead-control-css',
         10 => 'aphront-list-filter-view-css',
         11 => 'phabricator-directory-css',
         12 => 'phabricator-jump-nav',
         13 => 'phabricator-remarkup-css',
         14 => 'syntax-highlighting-css',
         15 => 'aphront-pager-view-css',
         16 => 'phabricator-transaction-view-css',
         17 => 'aphront-tooltip-css',
         18 => 'phabricator-flag-css',
         19 => 'aphront-error-view-css',
-        20 => 'sprite-icon-css',
+        20 => 'sprite-icons-css',
         21 => 'sprite-gradient-css',
         22 => 'sprite-menu-css',
         23 => 'sprite-apps-large-css',
         24 => 'phabricator-main-menu-view',
         25 => 'phabricator-notification-css',
         26 => 'phabricator-notification-menu-css',
         27 => 'lightbox-attachment-css',
         28 => 'phabricator-header-view-css',
         29 => 'phabricator-form-view-css',
         30 => 'phabricator-filetree-view-css',
         31 => 'phabricator-nav-view-css',
         32 => 'phabricator-side-menu-view-css',
         33 => 'phabricator-crumbs-view-css',
         34 => 'phabricator-object-item-list-view-css',
         35 => 'global-drag-and-drop-css',
       ),
-      'uri' => '/res/pkg/aede25c4/core.pkg.css',
+      'uri' => '/res/pkg/d4935661/core.pkg.css',
       'type' => 'css',
     ),
     '26980a1c' =>
     array(
       'name' => 'core.pkg.js',
       'symbols' =>
       array(
         0 => 'javelin-behavior-aphront-basic-tokenizer',
         1 => 'javelin-behavior-workflow',
         2 => 'javelin-behavior-aphront-form-disable-on-submit',
         3 => 'phabricator-keyboard-shortcut-manager',
         4 => 'phabricator-keyboard-shortcut',
         5 => 'javelin-behavior-phabricator-keyboard-shortcuts',
         6 => 'javelin-behavior-refresh-csrf',
         7 => 'javelin-behavior-phabricator-watch-anchor',
         8 => 'javelin-behavior-phabricator-autofocus',
         9 => 'phabricator-menu-item',
         10 => 'phabricator-dropdown-menu',
         11 => 'phabricator-phtize',
         12 => 'javelin-behavior-phabricator-oncopy',
         13 => 'phabricator-tooltip',
         14 => 'javelin-behavior-phabricator-tooltips',
         15 => 'phabricator-prefab',
         16 => 'javelin-behavior-device',
         17 => 'javelin-behavior-toggle-class',
         18 => 'javelin-behavior-lightbox-attachments',
         19 => 'phabricator-busy',
         20 => 'javelin-aphlict',
         21 => 'phabricator-notification',
         22 => 'javelin-behavior-aphlict-listen',
         23 => 'javelin-behavior-phabricator-search-typeahead',
         24 => 'javelin-behavior-konami',
         25 => 'javelin-behavior-aphlict-dropdown',
         26 => 'javelin-behavior-history-install',
         27 => 'javelin-behavior-phabricator-gesture',
         28 => 'javelin-behavior-phabricator-active-nav',
         29 => 'javelin-behavior-phabricator-nav',
         30 => 'javelin-behavior-phabricator-remarkup-assist',
         31 => 'phabricator-textareautils',
         32 => 'phabricator-file-upload',
         33 => 'javelin-behavior-global-drag-and-drop',
         34 => 'javelin-behavior-phabricator-reveal-content',
       ),
       'uri' => '/res/pkg/26980a1c/core.pkg.js',
       'type' => 'js',
     ),
     '4ccfeb47' =>
     array(
       'name' => 'darkconsole.pkg.js',
       'symbols' =>
       array(
         0 => 'javelin-behavior-dark-console',
         1 => 'javelin-behavior-error-log',
       ),
       'uri' => '/res/pkg/4ccfeb47/darkconsole.pkg.js',
       'type' => 'js',
     ),
     'dd27a69b' =>
     array(
       'name' => 'differential.pkg.css',
       'symbols' =>
       array(
         0 => 'differential-core-view-css',
         1 => 'differential-changeset-view-css',
         2 => 'differential-results-table-css',
         3 => 'differential-revision-history-css',
         4 => 'differential-revision-list-css',
         5 => 'differential-table-of-contents-css',
         6 => 'differential-revision-comment-css',
         7 => 'differential-revision-add-comment-css',
         8 => 'differential-revision-comment-list-css',
         9 => 'phabricator-object-selector-css',
         10 => 'phabricator-content-source-view-css',
         11 => 'differential-local-commits-view-css',
         12 => 'inline-comment-summary-css',
       ),
       'uri' => '/res/pkg/dd27a69b/differential.pkg.css',
       'type' => 'css',
     ),
     '27c55b30' =>
     array(
       'name' => 'differential.pkg.js',
       'symbols' =>
       array(
         0 => 'phabricator-drag-and-drop-file-upload',
         1 => 'phabricator-shaped-request',
         2 => 'javelin-behavior-differential-feedback-preview',
         3 => 'javelin-behavior-differential-edit-inline-comments',
         4 => 'javelin-behavior-differential-populate',
         5 => 'javelin-behavior-differential-show-more',
         6 => 'javelin-behavior-differential-diff-radios',
         7 => 'javelin-behavior-differential-accept-with-errors',
         8 => 'javelin-behavior-differential-comment-jump',
         9 => 'javelin-behavior-differential-add-reviewers-and-ccs',
         10 => 'javelin-behavior-differential-keyboard-navigation',
         11 => 'javelin-behavior-aphront-drag-and-drop',
         12 => 'javelin-behavior-aphront-drag-and-drop-textarea',
         13 => 'javelin-behavior-phabricator-object-selector',
         14 => 'javelin-behavior-repository-crossreference',
         15 => 'javelin-behavior-load-blame',
         16 => 'differential-inline-comment-editor',
         17 => 'javelin-behavior-differential-dropdown-menus',
         18 => 'javelin-behavior-differential-toggle-files',
         19 => 'javelin-behavior-differential-user-select',
       ),
       'uri' => '/res/pkg/27c55b30/differential.pkg.js',
       'type' => 'js',
     ),
     'c8ce2d88' =>
     array(
       'name' => 'diffusion.pkg.css',
       'symbols' =>
       array(
         0 => 'diffusion-commit-view-css',
         1 => 'diffusion-icons-css',
       ),
       'uri' => '/res/pkg/c8ce2d88/diffusion.pkg.css',
       'type' => 'css',
     ),
     'f96657b8' =>
     array(
       'name' => 'diffusion.pkg.js',
       'symbols' =>
       array(
         0 => 'javelin-behavior-diffusion-pull-lastmodified',
         1 => 'javelin-behavior-diffusion-commit-graph',
         2 => 'javelin-behavior-audit-preview',
       ),
       'uri' => '/res/pkg/f96657b8/diffusion.pkg.js',
       'type' => 'js',
     ),
     '202a3dd0' =>
     array(
       'name' => 'javelin.pkg.js',
       'symbols' =>
       array(
         0 => 'javelin-util',
         1 => 'javelin-install',
         2 => 'javelin-event',
         3 => 'javelin-stratcom',
         4 => 'javelin-behavior',
         5 => 'javelin-resource',
         6 => 'javelin-request',
         7 => 'javelin-vector',
         8 => 'javelin-dom',
         9 => 'javelin-json',
         10 => 'javelin-uri',
         11 => 'javelin-workflow',
         12 => 'javelin-mask',
         13 => 'javelin-typeahead',
         14 => 'javelin-typeahead-normalizer',
         15 => 'javelin-typeahead-source',
         16 => 'javelin-typeahead-preloaded-source',
         17 => 'javelin-typeahead-ondemand-source',
         18 => 'javelin-tokenizer',
       ),
       'uri' => '/res/pkg/202a3dd0/javelin.pkg.js',
       'type' => 'js',
     ),
     '6b1fccc6' =>
     array(
       'name' => 'maniphest.pkg.css',
       'symbols' =>
       array(
         0 => 'maniphest-task-summary-css',
         1 => 'maniphest-transaction-detail-css',
         2 => 'aphront-attached-file-view-css',
         3 => 'phabricator-project-tag-css',
       ),
       'uri' => '/res/pkg/6b1fccc6/maniphest.pkg.css',
       'type' => 'css',
     ),
     'f85eb6d8' =>
     array(
       'name' => 'maniphest.pkg.js',
       'symbols' =>
       array(
         0 => 'javelin-behavior-maniphest-batch-selector',
         1 => 'javelin-behavior-maniphest-transaction-controls',
         2 => 'javelin-behavior-maniphest-transaction-preview',
         3 => 'javelin-behavior-maniphest-transaction-expand',
         4 => 'javelin-behavior-maniphest-subpriority-editor',
       ),
       'uri' => '/res/pkg/f85eb6d8/maniphest.pkg.js',
       'type' => 'js',
     ),
   ),
   'reverse' =>
   array(
     'aphront-attached-file-view-css' => '6b1fccc6',
-    'aphront-dialog-view-css' => 'aede25c4',
-    'aphront-error-view-css' => 'aede25c4',
-    'aphront-form-view-css' => 'aede25c4',
-    'aphront-list-filter-view-css' => 'aede25c4',
-    'aphront-pager-view-css' => 'aede25c4',
-    'aphront-panel-view-css' => 'aede25c4',
-    'aphront-table-view-css' => 'aede25c4',
-    'aphront-tokenizer-control-css' => 'aede25c4',
-    'aphront-tooltip-css' => 'aede25c4',
-    'aphront-typeahead-control-css' => 'aede25c4',
+    'aphront-dialog-view-css' => 'd4935661',
+    'aphront-error-view-css' => 'd4935661',
+    'aphront-form-view-css' => 'd4935661',
+    'aphront-list-filter-view-css' => 'd4935661',
+    'aphront-pager-view-css' => 'd4935661',
+    'aphront-panel-view-css' => 'd4935661',
+    'aphront-table-view-css' => 'd4935661',
+    'aphront-tokenizer-control-css' => 'd4935661',
+    'aphront-tooltip-css' => 'd4935661',
+    'aphront-typeahead-control-css' => 'd4935661',
     'differential-changeset-view-css' => 'dd27a69b',
     'differential-core-view-css' => 'dd27a69b',
     'differential-inline-comment-editor' => '27c55b30',
     'differential-local-commits-view-css' => 'dd27a69b',
     'differential-results-table-css' => 'dd27a69b',
     'differential-revision-add-comment-css' => 'dd27a69b',
     'differential-revision-comment-css' => 'dd27a69b',
     'differential-revision-comment-list-css' => 'dd27a69b',
     'differential-revision-history-css' => 'dd27a69b',
     'differential-revision-list-css' => 'dd27a69b',
     'differential-table-of-contents-css' => 'dd27a69b',
     'diffusion-commit-view-css' => 'c8ce2d88',
     'diffusion-icons-css' => 'c8ce2d88',
-    'global-drag-and-drop-css' => 'aede25c4',
+    'global-drag-and-drop-css' => 'd4935661',
     'inline-comment-summary-css' => 'dd27a69b',
     'javelin-aphlict' => '26980a1c',
     'javelin-behavior' => '202a3dd0',
     'javelin-behavior-aphlict-dropdown' => '26980a1c',
     'javelin-behavior-aphlict-listen' => '26980a1c',
     'javelin-behavior-aphront-basic-tokenizer' => '26980a1c',
     'javelin-behavior-aphront-drag-and-drop' => '27c55b30',
     'javelin-behavior-aphront-drag-and-drop-textarea' => '27c55b30',
     'javelin-behavior-aphront-form-disable-on-submit' => '26980a1c',
     'javelin-behavior-audit-preview' => 'f96657b8',
     'javelin-behavior-dark-console' => '4ccfeb47',
     'javelin-behavior-device' => '26980a1c',
     'javelin-behavior-differential-accept-with-errors' => '27c55b30',
     'javelin-behavior-differential-add-reviewers-and-ccs' => '27c55b30',
     'javelin-behavior-differential-comment-jump' => '27c55b30',
     'javelin-behavior-differential-diff-radios' => '27c55b30',
     'javelin-behavior-differential-dropdown-menus' => '27c55b30',
     'javelin-behavior-differential-edit-inline-comments' => '27c55b30',
     'javelin-behavior-differential-feedback-preview' => '27c55b30',
     'javelin-behavior-differential-keyboard-navigation' => '27c55b30',
     'javelin-behavior-differential-populate' => '27c55b30',
     'javelin-behavior-differential-show-more' => '27c55b30',
     'javelin-behavior-differential-toggle-files' => '27c55b30',
     'javelin-behavior-differential-user-select' => '27c55b30',
     'javelin-behavior-diffusion-commit-graph' => 'f96657b8',
     'javelin-behavior-diffusion-pull-lastmodified' => 'f96657b8',
     'javelin-behavior-error-log' => '4ccfeb47',
     'javelin-behavior-global-drag-and-drop' => '26980a1c',
     'javelin-behavior-history-install' => '26980a1c',
     'javelin-behavior-konami' => '26980a1c',
     'javelin-behavior-lightbox-attachments' => '26980a1c',
     'javelin-behavior-load-blame' => '27c55b30',
     'javelin-behavior-maniphest-batch-selector' => 'f85eb6d8',
     'javelin-behavior-maniphest-subpriority-editor' => 'f85eb6d8',
     'javelin-behavior-maniphest-transaction-controls' => 'f85eb6d8',
     'javelin-behavior-maniphest-transaction-expand' => 'f85eb6d8',
     'javelin-behavior-maniphest-transaction-preview' => 'f85eb6d8',
     'javelin-behavior-phabricator-active-nav' => '26980a1c',
     'javelin-behavior-phabricator-autofocus' => '26980a1c',
     'javelin-behavior-phabricator-gesture' => '26980a1c',
     'javelin-behavior-phabricator-keyboard-shortcuts' => '26980a1c',
     'javelin-behavior-phabricator-nav' => '26980a1c',
     'javelin-behavior-phabricator-object-selector' => '27c55b30',
     'javelin-behavior-phabricator-oncopy' => '26980a1c',
     'javelin-behavior-phabricator-remarkup-assist' => '26980a1c',
     'javelin-behavior-phabricator-reveal-content' => '26980a1c',
     'javelin-behavior-phabricator-search-typeahead' => '26980a1c',
     'javelin-behavior-phabricator-tooltips' => '26980a1c',
     'javelin-behavior-phabricator-watch-anchor' => '26980a1c',
     'javelin-behavior-refresh-csrf' => '26980a1c',
     'javelin-behavior-repository-crossreference' => '27c55b30',
     'javelin-behavior-toggle-class' => '26980a1c',
     'javelin-behavior-workflow' => '26980a1c',
     'javelin-dom' => '202a3dd0',
     'javelin-event' => '202a3dd0',
     'javelin-install' => '202a3dd0',
     'javelin-json' => '202a3dd0',
     'javelin-mask' => '202a3dd0',
     'javelin-request' => '202a3dd0',
     'javelin-resource' => '202a3dd0',
     'javelin-stratcom' => '202a3dd0',
     'javelin-tokenizer' => '202a3dd0',
     'javelin-typeahead' => '202a3dd0',
     'javelin-typeahead-normalizer' => '202a3dd0',
     'javelin-typeahead-ondemand-source' => '202a3dd0',
     'javelin-typeahead-preloaded-source' => '202a3dd0',
     'javelin-typeahead-source' => '202a3dd0',
     'javelin-uri' => '202a3dd0',
     'javelin-util' => '202a3dd0',
     'javelin-vector' => '202a3dd0',
     'javelin-workflow' => '202a3dd0',
-    'lightbox-attachment-css' => 'aede25c4',
+    'lightbox-attachment-css' => 'd4935661',
     'maniphest-task-summary-css' => '6b1fccc6',
     'maniphest-transaction-detail-css' => '6b1fccc6',
     'phabricator-busy' => '26980a1c',
     'phabricator-content-source-view-css' => 'dd27a69b',
-    'phabricator-core-buttons-css' => 'aede25c4',
-    'phabricator-core-css' => 'aede25c4',
-    'phabricator-crumbs-view-css' => 'aede25c4',
-    'phabricator-directory-css' => 'aede25c4',
+    'phabricator-core-buttons-css' => 'd4935661',
+    'phabricator-core-css' => 'd4935661',
+    'phabricator-crumbs-view-css' => 'd4935661',
+    'phabricator-directory-css' => 'd4935661',
     'phabricator-drag-and-drop-file-upload' => '27c55b30',
     'phabricator-dropdown-menu' => '26980a1c',
     'phabricator-file-upload' => '26980a1c',
-    'phabricator-filetree-view-css' => 'aede25c4',
-    'phabricator-flag-css' => 'aede25c4',
-    'phabricator-form-view-css' => 'aede25c4',
-    'phabricator-header-view-css' => 'aede25c4',
-    'phabricator-jump-nav' => 'aede25c4',
+    'phabricator-filetree-view-css' => 'd4935661',
+    'phabricator-flag-css' => 'd4935661',
+    'phabricator-form-view-css' => 'd4935661',
+    'phabricator-header-view-css' => 'd4935661',
+    'phabricator-jump-nav' => 'd4935661',
     'phabricator-keyboard-shortcut' => '26980a1c',
     'phabricator-keyboard-shortcut-manager' => '26980a1c',
-    'phabricator-main-menu-view' => 'aede25c4',
+    'phabricator-main-menu-view' => 'd4935661',
     'phabricator-menu-item' => '26980a1c',
-    'phabricator-nav-view-css' => 'aede25c4',
+    'phabricator-nav-view-css' => 'd4935661',
     'phabricator-notification' => '26980a1c',
-    'phabricator-notification-css' => 'aede25c4',
-    'phabricator-notification-menu-css' => 'aede25c4',
-    'phabricator-object-item-list-view-css' => 'aede25c4',
+    'phabricator-notification-css' => 'd4935661',
+    'phabricator-notification-menu-css' => 'd4935661',
+    'phabricator-object-item-list-view-css' => 'd4935661',
     'phabricator-object-selector-css' => 'dd27a69b',
     'phabricator-phtize' => '26980a1c',
     'phabricator-prefab' => '26980a1c',
     'phabricator-project-tag-css' => '6b1fccc6',
-    'phabricator-remarkup-css' => 'aede25c4',
+    'phabricator-remarkup-css' => 'd4935661',
     'phabricator-shaped-request' => '27c55b30',
-    'phabricator-side-menu-view-css' => 'aede25c4',
-    'phabricator-standard-page-view' => 'aede25c4',
+    'phabricator-side-menu-view-css' => 'd4935661',
+    'phabricator-standard-page-view' => 'd4935661',
     'phabricator-textareautils' => '26980a1c',
     'phabricator-tooltip' => '26980a1c',
-    'phabricator-transaction-view-css' => 'aede25c4',
-    'phabricator-zindex-css' => 'aede25c4',
-    'sprite-apps-large-css' => 'aede25c4',
-    'sprite-gradient-css' => 'aede25c4',
-    'sprite-icon-css' => 'aede25c4',
-    'sprite-menu-css' => 'aede25c4',
-    'syntax-highlighting-css' => 'aede25c4',
+    'phabricator-transaction-view-css' => 'd4935661',
+    'phabricator-zindex-css' => 'd4935661',
+    'sprite-apps-large-css' => 'd4935661',
+    'sprite-gradient-css' => 'd4935661',
+    'sprite-icons-css' => 'd4935661',
+    'sprite-menu-css' => 'd4935661',
+    'syntax-highlighting-css' => 'd4935661',
   ),
 ));
diff --git a/src/applications/meta/view/PhabricatorApplicationLaunchView.php b/src/applications/meta/view/PhabricatorApplicationLaunchView.php
index 2f7448b339..14b8e9a4da 100644
--- a/src/applications/meta/view/PhabricatorApplicationLaunchView.php
+++ b/src/applications/meta/view/PhabricatorApplicationLaunchView.php
@@ -1,177 +1,177 @@
 <?php
 
 final class PhabricatorApplicationLaunchView extends AphrontView {
 
   private $application;
   private $status;
   private $fullWidth;
 
   public function setFullWidth($full_width) {
     $this->fullWidth = $full_width;
     return $this;
   }
 
   public function setApplication(PhabricatorApplication $application) {
     $this->application = $application;
     return $this;
   }
 
   public function setApplicationStatus(array $status) {
     $this->status = $status;
     return $this;
   }
 
   public function render() {
     $application = $this->application;
 
     require_celerity_resource('phabricator-application-launch-view-css');
     require_celerity_resource('sprite-apps-large-css');
 
     $content = array();
     $icon = null;
     $create_button = null;
     if ($application) {
       $content[] = phutil_tag(
         'span',
         array(
           'class' => 'phabricator-application-launch-name',
         ),
         $application->getName());
 
       if ($application->isBeta()) {
         $content[] = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-application-beta',
           ),
           "\xCE\xB2");
       }
 
       if ($this->fullWidth) {
         $content[] = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-application-launch-description',
           ),
           $application->getShortDescription());
       }
 
       $counts = array();
       $text = array();
       if ($this->status) {
         foreach ($this->status as $status) {
           $type = $status->getType();
           $counts[$type] = idx($counts, $type, 0) + $status->getCount();
           if ($status->getCount()) {
             $text[] = $status->getText();
           }
         }
       }
 
       $attention = PhabricatorApplicationStatusView::TYPE_NEEDS_ATTENTION;
       $warning = PhabricatorApplicationStatusView::TYPE_WARNING;
       if (!empty($counts[$attention]) || !empty($counts[$warning])) {
         $count = idx($counts, $attention, 0);
         $count1 = $count2 = '';
         if ($count > 0) {
           $count1 = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-application-attention-count',
           ),
           $count);
         }
 
 
         if (!empty($counts[$warning])) {
           $count2 = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-application-warning-count',
           ),
           $counts[$warning]);
         }
 
         Javelin::initBehavior('phabricator-tooltips');
         $content[] = javelin_tag(
           'span',
           array(
             'sigil' => 'has-tooltip',
             'meta' => array(
               'tip' => implode("\n", $text),
               'size' => 240,
             ),
             'class' => 'phabricator-application-launch-attention',
           ),
           array($count1, $count2));
       }
 
       $classes = array();
       $classes[] = 'phabricator-application-launch-icon';
       $styles = array();
 
       if ($application->getIconURI()) {
         $styles[] = 'background-image: url('.$application->getIconURI().')';
       } else {
         $icon = $application->getIconName();
         $classes[] = 'sprite-apps-large';
         $classes[] = 'apps-'.$icon.'-light-large';
       }
 
       $icon = phutil_tag(
         'span',
         array(
           'class' => implode(' ', $classes),
           'style' => nonempty(implode('; ', $styles), null),
         ),
         '');
 
       $classes = array();
       if ($application->getQuickCreateURI()) {
         $classes[] = 'phabricator-application-create-icon';
-        $classes[] = 'sprite-icon';
-        $classes[] = 'action-new-grey';
+        $classes[] = 'sprite-icons';
+        $classes[] = 'icons-new-grey';
         $plus_icon = phutil_tag(
           'span',
           array(
             'class' => implode(' ', $classes),
           ),
           '');
 
         $create_button = phutil_tag(
           'a',
           array(
             'href' => $application->getQuickCreateURI(),
             'class' => 'phabricator-application-launch-create',
           ),
           $plus_icon);
         $classes = array();
         $classes[] = 'application-tile-create';
       }
     }
 
     $classes[] = 'phabricator-application-launch-container';
     if ($this->fullWidth) {
       $classes[] = 'application-tile-full';
     }
 
     $title = null;
     if ($application && !$this->fullWidth) {
       $title = $application->getShortDescription();
     }
 
     $app_button = phutil_tag(
       $application ? 'a' : 'div',
       array(
         'class' => implode(' ', $classes),
         'href'  => $application ? $application->getBaseURI() : null,
         'title' => $title,
       ),
       array(
         $icon,
         $content,
       ));
 
     return array($app_button, $create_button);
   }
 }
diff --git a/src/applications/pholio/view/PholioMockEmbedView.php b/src/applications/pholio/view/PholioMockEmbedView.php
index 5329299021..77658a4caa 100644
--- a/src/applications/pholio/view/PholioMockEmbedView.php
+++ b/src/applications/pholio/view/PholioMockEmbedView.php
@@ -1,120 +1,120 @@
 <?php
 
 final class PholioMockEmbedView extends AphrontView {
 
   private $mock;
   private $images = array();
 
   public function setMock(PholioMock $mock) {
     $this->mock = $mock;
     return $this;
   }
 
   public function setImages(array $images) {
     $this->images = $images;
     return $this;
   }
 
   public function render() {
     if (!$this->mock) {
       throw new Exception("Call setMock() before render()!");
     }
 
     require_celerity_resource('pholio-css');
 
 
     $mock_link = phutil_tag(
       'a',
       array(
         'href' => '/M'.$this->mock->getID(),
       ),
       'M'.$this->mock->getID().' '.$this->mock->getName());
 
     $mock_header = phutil_tag(
       'div',
       array(
         'class' => 'pholio-mock-embed-head',
       ),
       $mock_link);
 
     $images_to_show = array();
     if (!empty($this->images)) {
       $images_to_show = array_intersect_key(
         $this->mock->getImages(), array_flip($this->images));
     }
 
     if (empty($images_to_show)) {
       $images_to_show = array_slice($this->mock->getImages(), 0, 4);
     }
 
     $thumbnails = array();
     foreach ($images_to_show as $image) {
       $thumbfile = $image->getFile();
 
       $dimensions = PhabricatorImageTransformer::getPreviewDimensions(
         $thumbfile,
         140);
 
       $tag = phutil_tag(
         'img',
         array(
             'width' => $dimensions['sdx'],
             'height' => $dimensions['sdy'],
             'class' => 'pholio-mock-carousel-thumbnail',
             'src' => $thumbfile->getPreview140URI(),
             'style' => 'top: '.floor((140 - $dimensions['sdy'] ) / 2).'px',
           ));
 
         $thumbnails[] = javelin_tag(
           'a',
           array(
             'class' => 'pholio-mock-carousel-thumb-item',
             'href' => '/M'.$this->mock->getID().'/'.$image->getID().'/',
           ),
           $tag);
     }
 
     $mock_body = phutil_tag(
       'div',
       array(),
       $thumbnails);
 
     $icons_data = array(
       'image' => count($this->mock->getImages()),
       'like' => $this->mock->getTokenCount());
 
     $icon_list = array();
     foreach ($icons_data as $icon_name => $icon_value) {
       $icon = phutil_tag(
         'span',
          array(
            'class' =>
-             'pholio-mock-embed-icon sprite-icon action-'.$icon_name.'-grey',
+             'pholio-mock-embed-icon sprite-icons icons-'.$icon_name.'-grey',
          ),
          ' ');
       $count = phutil_tag('span', array(), $icon_value);
 
       $icon_list[] = phutil_tag(
         'span',
         array(
           'class' => 'pholio-mock-embed-icons'
         ),
         array($icon, $count));
     }
 
     $mock_footer = phutil_tag(
       'div',
       array(
          'class' => 'pholio-mock-embed-footer',
       ),
       $icon_list);
 
 
     return phutil_tag(
       'div',
       array(
         'class' => 'pholio-mock-embed'
       ),
       array($mock_header, $mock_body, $mock_footer));
   }
 }
diff --git a/src/applications/uiexample/examples/PHUIIconExample.php b/src/applications/uiexample/examples/PHUIIconExample.php
index a2114a529f..df11e47c8c 100644
--- a/src/applications/uiexample/examples/PHUIIconExample.php
+++ b/src/applications/uiexample/examples/PHUIIconExample.php
@@ -1,185 +1,187 @@
 <?php
 
 final class PHUIIconExample extends PhabricatorUIExample {
 
   public function getName() {
     return 'Icons and Images';
   }
 
   public function getDescription() {
     return 'Easily render icons or images with links and sprites.';
   }
 
   public function renderExample() {
 
     $person1 = new PHUIIconView();
     $person1->setHeadSize(PHUIIconView::HEAD_MEDIUM);
     $person1->setHref('http://en.wikipedia.org/wiki/George_Washington');
     $person1->setImage(
       celerity_get_resource_uri('/rsrc/image/people/washington.png'));
 
     $person2 = new PHUIIconView();
     $person2->setHeadSize(PHUIIconView::HEAD_MEDIUM);
     $person2->setHref('http://en.wikipedia.org/wiki/Warren_G._Harding');
     $person2->setImage(
       celerity_get_resource_uri('/rsrc/image/people/harding.png'));
 
     $person3 = new PHUIIconView();
     $person3->setHeadSize(PHUIIconView::HEAD_MEDIUM);
     $person3->setHref('http://en.wikipedia.org/wiki/William_Howard_Taft');
     $person3->setImage(
       celerity_get_resource_uri('/rsrc/image/people/taft.png'));
 
     $person4 = new PHUIIconView();
     $person4->setHeadSize(PHUIIconView::HEAD_SMALL);
     $person4->setHref('http://en.wikipedia.org/wiki/George_Washington');
     $person4->setImage(
       celerity_get_resource_uri('/rsrc/image/people/washington.png'));
 
     $person5 = new PHUIIconView();
     $person5->setHeadSize(PHUIIconView::HEAD_SMALL);
     $person5->setHref('http://en.wikipedia.org/wiki/Warren_G._Harding');
     $person5->setImage(
       celerity_get_resource_uri('/rsrc/image/people/harding.png'));
 
     $person6 = new PHUIIconView();
     $person6->setHeadSize(PHUIIconView::HEAD_SMALL);
     $person6->setHref('http://en.wikipedia.org/wiki/William_Howard_Taft');
     $person6->setImage(
       celerity_get_resource_uri('/rsrc/image/people/taft.png'));
 
     $card1 = id(new PHUIIconView())
       ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS)
       ->setSpriteIcon('visa')
       ->addClass(PHUI::MARGIN_SMALL_RIGHT);
 
     $card2 = id(new PHUIIconView())
       ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS)
       ->setSpriteIcon('mastercard')
       ->addClass(PHUI::MARGIN_SMALL_RIGHT);
 
     $card3 = id(new PHUIIconView())
       ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS)
       ->setSpriteIcon('paypal')
       ->addClass(PHUI::MARGIN_SMALL_RIGHT);
 
     $card4 = id(new PHUIIconView())
       ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS)
       ->setSpriteIcon('americanexpress')
       ->addClass(PHUI::MARGIN_SMALL_RIGHT);
 
     $card5 = id(new PHUIIconView())
       ->setSpriteSheet(PHUIIconView::SPRITE_PAYMENTS)
       ->setSpriteIcon('googlecheckout');
 
     $actions = array(
       'settings-grey',
       'heart-grey',
       'tag-grey',
       'new-grey',
       'search-grey',
       'move-grey');
     $actionview = array();
     foreach ($actions as $action) {
       $actionview[] = id(new PHUIIconView())
         ->setSpriteSheet(PHUIIconView::SPRITE_ACTIONS)
         ->setSpriteIcon($action)
         ->setHref('#');
     }
 
     $tokens = array(
       'like-1',
       'like-2',
       'heart-1',
       'heart-2');
     $tokenview = array();
     foreach ($tokens as $token) {
       $tokenview[] =
         id(new PHUIIconView())
           ->setSpriteSheet(PHUIIconView::SPRITE_TOKENS)
           ->setSpriteIcon($token);
     }
 
     $layout1 =
       array(
         id(new PHUIBoxView())
           ->appendChild($actionview)
           ->addMargin(PHUI::MARGIN_MEDIUM)
           ->addPadding(PHUI::PADDING_SMALL)
           ->setShadow(true));
 
     $layout2 =
       array(
         id(new PHUIBoxView())
           ->appendChild(array($person1, $person2, $person3))
           ->addMargin(PHUI::MARGIN_MEDIUM)
           ->addPadding(PHUI::PADDING_SMALL)
           ->setShadow(true));
 
     $layout2a =
       array(
         id(new PHUIBoxView())
           ->appendChild(array($person4, $person5, $person6))
           ->addMargin(PHUI::MARGIN_MEDIUM)
           ->addPadding(PHUI::PADDING_SMALL)
           ->setShadow(true));
 
     $layout3 =
       array(
         id(new PHUIBoxView())
           ->appendChild($tokenview)
           ->addMargin(PHUI::MARGIN_MEDIUM)
           ->addPadding(PHUI::PADDING_SMALL)
           ->setShadow(true));
 
     $layout4 =
       array(
         id(new PHUIBoxView())
           ->appendChild(array($card1, $card2, $card3, $card4, $card5))
           ->addMargin(PHUI::MARGIN_MEDIUM)
           ->addPadding(PHUI::PADDING_MEDIUM)
           ->setShadow(true));
 
     $head1 = id(new PhabricatorHeaderView())
       ->setHeader(pht('Action Icons!'));
 
     $head2 = id(new PhabricatorHeaderView())
       ->setHeader(pht('People!'));
 
     $head3 = id(new PhabricatorHeaderView())
       ->setHeader(pht('Tokens'));
 
     $head4 = id(new PhabricatorHeaderView())
       ->setHeader(pht('Payments'));
 
     $wrap1 = id(new PHUIBoxView())
       ->appendChild($layout1)
       ->addMargin(PHUI::MARGIN_LARGE);
 
     $wrap2 = id(new PHUIBoxView())
       ->appendChild(array($layout2, $layout2a))
       ->addMargin(PHUI::MARGIN_LARGE);
 
     $wrap3 = id(new PHUIBoxView())
       ->appendChild($layout3)
       ->addMargin(PHUI::MARGIN_LARGE);
 
     $wrap4 = id(new PHUIBoxView())
       ->appendChild($layout4)
       ->addMargin(PHUI::MARGIN_LARGE);
 
     return phutil_tag(
       'div',
-        array(),
+        array(
+          'class' => 'phui-icon-example',
+        ),
         array(
           $head1,
           $wrap1,
           $head2,
           $wrap2,
           $head3,
           $wrap3,
           $head4,
           $wrap4
         ));
         }
 }
diff --git a/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php b/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php
index e95735fb4d..9580520a17 100644
--- a/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php
+++ b/src/applications/uiexample/examples/PhabricatorObjectItemListExample.php
@@ -1,260 +1,294 @@
 <?php
 
 final class PhabricatorObjectItemListExample extends PhabricatorUIExample {
 
   public function getName() {
     return 'Object Item List';
   }
 
   public function getDescription() {
     return hsprintf(
       'Use <tt>PhabricatorObjectItemListView</tt> to render lists of objects.');
   }
 
   public function renderExample() {
     $request = $this->getRequest();
     $user = $request->getUser();
 
     $handle = PhabricatorObjectHandleData::loadOneHandle(
       $user->getPHID(),
       $user);
 
     $out = array();
 
     $head = id(new PhabricatorHeaderView())
       ->setHeader(pht('Basic List'));
 
     $list = new PhabricatorObjectItemListView();
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setObjectName('FRUIT1')
         ->setHeader(pht('Apple'))
         ->setHref('#'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setObjectName('FRUIT2')
         ->setHeader(pht('Banana'))
         ->setHref('#'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setObjectName('FRUIT3')
         ->setHeader(pht('Cherry'))
         ->setHref('#'));
 
     $out[] = array($head, $list);
 
 
     $head = id(new PhabricatorHeaderView())
       ->setHeader(pht('Empty List'));
     $list = new PhabricatorObjectItemListView();
 
     $list->setNoDataString(pht('This list is empty.'));
 
     $out[] = array($head, $list);
 
 
     $head = id(new PhabricatorHeaderView())
       ->setHeader(pht('Stacked List'));
     $list = new PhabricatorObjectItemListView();
     $list->setStackable(true);
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Monday'))
         ->setHref('#'));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Tuesday'))
         ->setHref('#'));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Wednesday'))
         ->setHref('#'));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Thursday'))
         ->setHref('#'));
 
     $out[] = array($head, $list);
 
 
     $head = id(new PhabricatorHeaderView())
       ->setHeader(pht('Card List'));
     $list = new PhabricatorObjectItemListView();
     $list->setCards(true);
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Business Card'))
         ->setBarColor('red'));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Playing Card'))
         ->setBarColor('orange')
         ->addIcon('comment', pht('Royal Flush!')));
 
     $owner = phutil_tag('a', array('href' => '#'), pht('jackofclubs'));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('House of Cards'))
         ->setBarColor('yellow')
         ->addByline(pht('Owner: %s', $owner)));
 
     $author = phutil_tag('a', array('href' => '#'), pht('agoat'));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Cardigan'))
         ->setBarColor('green')
         ->addIcon('highlight', pht('Warm!'))
         ->addByline(pht('Author: %s', $author)));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Cardamom'))
         ->addFootIcon('highlight-white', 'Spice')
         ->setBarColor('blue'));
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht(
           'The human cardiovascular system includes the heart, lungs, and '.
           'some other parts; most of these parts are pretty squishy'))
         ->addFootIcon('search-white', pht('Respiration!'))
         ->addHandleIcon($handle, pht('You have a cardiovascular system!'))
         ->setBarColor('magenta'));
 
 
     $out[] = array($head, $list);
 
 
     $head = id(new PhabricatorHeaderView())
       ->setHeader(pht('Grippable List'));
     $list = new PhabricatorObjectItemListView();
     $list->setCards(true);
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Grab ahold!'))
         ->setHref('#')
         ->setGrippable(true)
         ->setBarColor('red'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Hold on tight!'))
         ->setHref('#')
         ->setGrippable(true)
         ->setBarColor('yellow'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht("Don't let go!"))
         ->setHref('#')
         ->setGrippable(true)
-        ->setBarColor('green'));
+        ->setBarColor('green')
+        ->addAction(
+          id(new PhabricatorMenuItemView())
+            ->setHref('#')
+            ->setIcon('delete')));
+
+    $out[] = array($head, $list);
+
+    $head = id(new PhabricatorHeaderView())
+      ->setHeader(pht('List With Actions'));
+    $list = new PhabricatorObjectItemListView();
+
+    $list->addItem(
+      id(new PhabricatorObjectItemView())
+        ->setHeader(pht('You Have The Power'))
+        ->setHref('#')
+        ->setBarColor('blue')
+        ->addAction(
+          id(new PhabricatorMenuItemView())
+            ->setHref('#')
+            ->setIcon('edit')));
+
+    $list->addItem(
+      id(new PhabricatorObjectItemView())
+        ->setHeader(pht('Believe In Yourself'))
+        ->setHref('#')
+        ->setBarColor('violet')
+        ->addAction(
+          id(new PhabricatorMenuItemView())
+            ->setHref('#')
+            ->setIcon('edit'))
+        ->addAction(
+          id(new PhabricatorMenuItemView())
+            ->setHref('#')
+            ->setIcon('delete')));
 
     $out[] = array($head, $list);
 
 
     $head = id(new PhabricatorHeaderView())
       ->setHeader(pht('Extras'));
 
     $list = new PhabricatorObjectItemListView();
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Ace of Hearts'))
         ->setSubHead(
           pht('This is the most powerful card in the game "Hearts".'))
         ->setHref('#')
         ->addAttribute(pht('Suit: Hearts'))
         ->addAttribute(pht('Rank: Ace'))
         ->addIcon('love', pht('Ace'))
         ->addIcon('love-grey', pht('Hearts'))
         ->addFootIcon('blame-white', pht('Ace'))
         ->addFootIcon('love-white', pht('Heart'))
         ->addHandleIcon($handle, pht('You hold all the cards.'))
         ->addHandleIcon($handle, pht('You make all the rules.')));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Just A Handle'))
         ->setHref('#')
         ->addHandleIcon($handle, pht('Handle Here')));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Poor Use of Space'))
         ->setHref('#')
         ->addAttribute('North West')
         ->addHandleIcon($handle, pht('South East')));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Crowded Eastern Edge'))
         ->setHref('#')
         ->addIcon('computer', pht('Stuff'))
         ->addIcon('computer', pht('Stuff'))
         ->addIcon('computer', pht('Stuff'))
         ->addHandleIcon($handle, pht('More Stuff')));
 
     $out[] = array($head, $list);
 
 
     $head = id(new PhabricatorHeaderView())
       ->setHeader(pht('Effects'));
 
     $list = new PhabricatorObjectItemListView();
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Normal'))
         ->setHref('#'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Highlighted'))
         ->setEffect('highlighted')
         ->setHref('#'));
 
     $list->addItem(
       id(new PhabricatorObjectItemView())
         ->setHeader(pht('Selected'))
         ->setEffect('selected')
         ->setHref('#'));
 
     $out[] = array($head, $list);
 
 
     $head = id(new PhabricatorHeaderView())
-      ->setHeader(pht('Effects'));
+      ->setHeader(pht('Colors'));
 
     $list = new PhabricatorObjectItemListView();
 
     $bar_colors = array(
       null      => pht('None'),
       'red'     => pht('Red'),
       'orange'  => pht('Orange'),
       'yellow'  => pht('Yellow'),
       'green'   => pht('Green'),
       'sky'     => pht('Sky'),
       'blue'    => pht('Blue'),
       'indigo'  => pht('Indigo'),
       'violet'  => pht('Violet'),
       'grey'    => pht('Grey'),
       'black'   => pht('Black'),
     );
 
     foreach ($bar_colors as $bar_color => $bar_label) {
       $list->addItem(
         id(new PhabricatorObjectItemView())
           ->setHeader($bar_label)
           ->setBarColor($bar_color));
     }
 
     $out[] = array($head, $list);
 
     return $out;
   }
 }
diff --git a/src/infrastructure/celerity/CeleritySpriteGenerator.php b/src/infrastructure/celerity/CeleritySpriteGenerator.php
index f7578468d0..b5fc3ddc1a 100644
--- a/src/infrastructure/celerity/CeleritySpriteGenerator.php
+++ b/src/infrastructure/celerity/CeleritySpriteGenerator.php
@@ -1,695 +1,695 @@
 <?php
 
 final class CeleritySpriteGenerator {
 
   public function buildIconSheet() {
     $icons = $this->getDirectoryList('icons_1x');
 
     $colors = array(
       '',
       'grey',
       'white',
     );
 
     $scales = array(
       '1x'  => 1,
       '2x'  => 2,
     );
 
     $template = id(new PhutilSprite())
       ->setSourceSize(14, 14);
 
     $sprites = array();
     foreach ($colors as $color) {
       foreach ($icons as $icon) {
         $prefix = 'icons_';
         if (strlen($color)) {
           $prefix .= $color.'_';
         }
 
         $suffix = '';
         if (strlen($color)) {
           $suffix = '-'.$color;
         }
 
         $sprite = id(clone $template)
-          ->setName('action-'.$icon.$suffix);
+          ->setName('icons-'.$icon.$suffix);
 
         $tcss = array();
-        $tcss[] = '.action-'.$icon.$suffix;
+        $tcss[] = '.icons-'.$icon.$suffix;
         if ($color == 'white') {
           $tcss[] = '.device-desktop .phabricator-action-view:hover '.
-            '.action-'.$icon;
+            '.icons-'.$icon;
           if ($icon == 'new') {
             // Hover state for the "+" icons on homepage tiles.
             $tcss[] = '.phabricator-application-launch-create:hover '.
-                      '.phabricator-application-create-icon.action-new-grey';
+                      '.phabricator-application-create-icon.icons-new-grey';
           }
         }
 
         $sprite->setTargetCSS(implode(', ', $tcss));
 
         foreach ($scales as $scale_key => $scale) {
           $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png');
           $sprite->setSourceFile($path, $scale);
         }
         $sprites[] = $sprite;
       }
     }
 
     $remarkup_icons = $this->getDirectoryList('remarkup_1x');
     foreach ($remarkup_icons as $icon) {
       $prefix = 'remarkup_';
 
       // Strip 'text_' from these file names.
       $class_name = substr($icon, 5);
 
       if ($class_name == 'order_off') {
         $tcss = '.remarkup-control-order-mode .remarkup-assist-order';
       } else if ($class_name == 'chaos_off') {
         $tcss = '.remarkup-control-chaos-mode .remarkup-assist-chaos';
       } else {
         $tcss = '.remarkup-assist-'.$class_name;
       }
 
       $sprite = id(clone $template)
         ->setName('remarkup-assist-'.$icon)
         ->setTargetCSS($tcss);
 
       foreach ($scales as $scale_key => $scale) {
         $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png');
         $sprite->setSourceFile($path, $scale);
       }
       $sprites[] = $sprite;
     }
 
-    $sheet = $this->buildSheet('icon', true);
+    $sheet = $this->buildSheet('icons', true);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
   public function buildActionsSheet() {
     $icons = $this->getDirectoryList('actions_white_1x');
 
     $colors = array(
       'dark',
       'grey',
       'white',
     );
 
     $scales = array(
       '1x'  => 1,
       '2x'  => 2,
     );
 
     $template = id(new PhutilSprite())
       ->setSourceSize(24, 24);
 
     $sprites = array();
     foreach ($colors as $color) {
       foreach ($icons as $icon) {
         $prefix = 'actions_';
         if (strlen($color)) {
           $prefix .= $color.'_';
         }
 
         $suffix = '';
         if (strlen($color)) {
           $suffix = '-'.$color;
         }
 
         $sprite = id(clone $template)
           ->setName('actions-'.$icon.$suffix);
 
         $tcss = array();
         $tcss[] = '.actions-'.$icon.$suffix;
         if ($color == 'dark') {
           $tcss[] = '.device-desktop '.
-            '.actions-'.$icon.'-grey.phui-icon-item-link:hover';
+            '.actions-'.$icon.'-grey.phui-icon-view:hover';
         }
 
         $sprite->setTargetCSS(implode(', ', $tcss));
 
         foreach ($scales as $scale_key => $scale) {
           $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png');
           $sprite->setSourceFile($path, $scale);
         }
         $sprites[] = $sprite;
       }
     }
 
     $sheet = $this->buildSheet('actions', true);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
     public function buildMiniconsSheet() {
     $icons = $this->getDirectoryList('minicons_white_1x');
 
     $colors = array(
       'white',
       'dark',
     );
 
     $scales = array(
       '1x'  => 1,
       '2x'  => 2,
     );
 
     $template = id(new PhutilSprite())
       ->setSourceSize(16, 16);
 
     $sprites = array();
     foreach ($colors as $color) {
       foreach ($icons as $icon) {
         $prefix = 'minicons_';
         if (strlen($color)) {
           $prefix .= $color.'_';
         }
 
         $suffix = '';
         if (strlen($color)) {
           $suffix = '-'.$color;
         }
 
         $sprite = id(clone $template)
           ->setName('minicons-'.$icon.$suffix);
 
         $sprite->setTargetCSS('.minicons-'.$icon.$suffix);
 
         foreach ($scales as $scale_key => $scale) {
           $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png');
           $sprite->setSourceFile($path, $scale);
         }
         $sprites[] = $sprite;
       }
     }
 
     $sheet = $this->buildSheet('minicons', true);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
 
   public function buildMenuSheet() {
     $sprites = array();
 
     $sources = array(
       'seen_read_all' => array(
         'x' => 18,
         'y' => 18,
         'css' =>
           '.alert-notifications .phabricator-main-menu-alert-icon',
       ),
       'seen_have_unread' => array(
         'x' => 18,
         'y' => 18,
         'css' =>
           '.alert-notifications:hover .phabricator-main-menu-alert-icon',
       ),
       'unseen_any' => array(
         'x' => 18,
         'y' => 18,
         'css' =>
           '.alert-notifications.alert-unread .phabricator-main-menu-alert-icon',
       ),
       'arrow-right' => array(
         'x' => 9,
         'y' => 31,
         'css' => '.phabricator-crumb-divider',
       ),
       'search' => array(
         'x' => 24,
         'y' => 24,
         'css' => '.menu-icon-search',
       ),
       'search_blue' => array(
         'x' => 24,
         'y' => 24,
         'css' => '.menu-icon-search-blue',
       ),
       'app' => array(
         'x' => 24,
         'y' => 24,
         'css' => '.menu-icon-app',
       ),
       'app_blue' => array(
         'x' => 24,
         'y' => 24,
         'css' => '.menu-icon-app-blue',
       ),
       'logo' => array(
         'x' => 139,
         'y' => 25,
         'css' => '.phabricator-main-menu-logo-image',
       ),
       'conf-off' => array(
         'x' => 18,
         'y' => 18,
         'css' =>
           '.alert-notifications .phabricator-main-menu-message-icon',
       ),
       'conf-hover' => array(
         'x' => 18,
         'y' => 18,
         'css' =>
           '.alert-notifications:hover .phabricator-main-menu-message-icon',
       ),
       'conf-unseen' => array(
         'x' => 18,
         'y' => 18,
         'css' =>
           '.alert-notifications.message-unread '.
           '.phabricator-main-menu-message-icon',
       ),
     );
 
     $scales = array(
       '1x' => 1,
       '2x' => 2,
     );
 
     $template = new PhutilSprite();
     foreach ($sources as $name => $spec) {
       $sprite = id(clone $template)
         ->setName($name)
         ->setSourceSize($spec['x'], $spec['y'])
         ->setTargetCSS($spec['css']);
 
       foreach ($scales as $scale_name => $scale) {
         $path = 'menu_'.$scale_name.'/'.$name.'.png';
         $path = $this->getPath($path);
 
         $sprite->setSourceFile($path, $scale);
       }
       $sprites[] = $sprite;
     }
 
     $sheet = $this->buildSheet('menu', true);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
   public function buildTokenSheet() {
     $tokens = $this->getDirectoryList('tokens_1x');
 
     $template = id(new PhutilSprite())
       ->setSourceSize(16, 16);
 
     $sprites = array();
     foreach ($tokens as $token) {
       $path = $this->getPath('tokens_1x/'.$token.'.png');
 
       $sprite = id(clone $template)
         ->setName('tokens-'.$token)
         ->setTargetCSS('.tokens-'.$token)
         ->setSourceFile($path, 1);
 
       $sprites[] = $sprite;
     }
 
     $sheet = $this->buildSheet('tokens', false);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
   public function buildPaymentsSheet() {
     $icons = $this->getDirectoryList('payments_2x');
     $scales = array(
       '2x' => 1,
     );
     $template = id(new PhutilSprite())
       ->setSourceSize(60, 32);
 
     $sprites = array();
     $prefix = 'payments_';
     foreach ($icons as $icon) {
       $sprite = id(clone $template)
         ->setName('payments-'.$icon)
         ->setTargetCSS('.payments-'.$icon);
 
       foreach ($scales as $scale_key => $scale) {
         $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png');
         $sprite->setSourceFile($path, $scale);
       }
       $sprites[] = $sprite;
     }
 
     $sheet = $this->buildSheet('payments', true);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
 
   public function buildConpherenceSheet() {
     $name = 'conpherence';
     $icons = $this->getDirectoryList($name.'_1x');
     $scales = array(
       '1x' => 1,
       '2x' => 2,
     );
     $template = id(new PhutilSprite())
       ->setSourceSize(32, 32);
 
     $sprites = array();
     foreach ($icons as $icon) {
       $color = preg_match('/_on/', $icon) ? 'on' : 'off';
 
       $prefix = $name.'_';
 
       $sprite = id(clone $template)
         ->setName($prefix.$icon);
 
       $tcss = array();
       $tcss[] = '.'.$prefix.$icon;
       if ($color == 'on') {
         $class = str_replace('_on', '_off', $prefix.$icon);
         $tcss[] = '.device-desktop .'.$class.':hover ';
       }
 
       $sprite->setTargetCSS(implode(', ', $tcss));
 
       foreach ($scales as $scale_key => $scale) {
         $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png');
         $sprite->setSourceFile($path, $scale);
       }
       $sprites[] = $sprite;
     }
 
     $sheet = $this->buildSheet($name, true);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
   public function buildDocsSheet() {
     $icons = $this->getDirectoryList('docs_1x');
     $scales = array(
       '1x' => 1,
       '2x' => 2,
     );
     $template = id(new PhutilSprite())
       ->setSourceSize(32, 32);
 
     $sprites = array();
     $prefix = 'docs_';
     foreach ($icons as $icon) {
       $sprite = id(clone $template)
         ->setName($prefix.$icon)
         ->setTargetCSS('.'.$prefix.$icon);
 
       foreach ($scales as $scale_key => $scale) {
         $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png');
         $sprite->setSourceFile($path, $scale);
       }
       $sprites[] = $sprite;
     }
 
     $sheet = $this->buildSheet('docs', true);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
   public function buildGradientSheet() {
     $gradients = $this->getDirectoryList('gradients');
 
     $template = new PhutilSprite();
 
     $unusual_heights = array(
       'dark-menu-label' => 25,
       'breadcrumbs'     => 31,
       'menu-hover'      => 28,
       'menu-label'      => 24,
       'menu-selected'   => 28,
       'red-header'      => 70,
       'blue-header'     => 70,
       'green-header'    => 70,
       'yellow-header'   => 70,
       'grey-header'     => 70,
       'dark-grey-header' => 70,
     );
 
     $extra_css = array(
       'dark-menu-label' =>
         ', .phabricator-dark-menu .phabricator-menu-item-type-label',
       'menu-label' =>
         ', .phabricator-side-menu .phabricator-menu-item-type-label',
       'menu-hover' =>
         ', .device-desktop .phabricator-side-menu '.
         'a.phabricator-menu-item-type-link:hover, '.
         '.phabricator-filetree a.phabricator-filetree-item:hover',
       'menu-selected' =>
         ', .phabricator-side-menu .phabricator-menu-item-selected, '.
         '.device-desktop .phabricator-side-menu '.
         'a.phabricator-menu-item-selected:hover, '.
         '.phabricator-nav-local a.phabricator-active-nav-focus',
     );
 
     $sprites = array();
     foreach ($gradients as $gradient) {
       $path = $this->getPath('gradients/'.$gradient.'.png');
       $sprite = id(clone $template)
         ->setName('gradient-'.$gradient)
         ->setSourceFile($path)
         ->setTargetCSS('.gradient-'.$gradient.idx($extra_css, $gradient));
 
       $sprite->setSourceSize(4, idx($unusual_heights, $gradient, 26));
 
       $sprites[] = $sprite;
     }
 
     $sheet = $this->buildSheet(
       'gradient',
       false,
       PhutilSpriteSheet::TYPE_REPEAT_X,
       ', .phabricator-dark-menu .phabricator-menu-item-type-label, '.
       '.phabricator-side-menu .phabricator-menu-item-type-label, '.
       '.device-desktop .phabricator-side-menu '.
         'a.phabricator-menu-item-type-link:hover, '.
       '.phabricator-side-menu .phabricator-menu-item-selected, '.
       '.device-desktop .phabricator-side-menu '.
         'a.phabricator-menu-item-selected:hover, '.
       '.phabricator-filetree a.phabricator-filetree-item:hover, '.
       '.phabricator-filetree a.phabricator-active-nav-focus');
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
   public function buildAppsSheet() {
     return $this->buildAppsSheetVariant(1);
   }
 
   public function buildAppsLargeSheet() {
     return $this->buildAppsSheetVariant(2);
   }
 
   public function buildAppsXLargeSheet() {
     return $this->buildAppsSheetVariant(3);
   }
 
   private function buildAppsSheetVariant($variant) {
 
     if ($variant == 1) {
       $scales = array(
         '1x' => 1,
         '2x' => 2,
       );
       $variant_name = 'apps';
       $variant_short = '';
       $size_x = 14;
       $size_y = 14;
 
       $colors = array(
         'dark'  => 'dark',
       );
     } else if ($variant == 2) {
       $scales = array(
         '2x' => 1,
         '4x' => 2,
       );
       $variant_name = 'apps-large';
       $variant_short = '-large';
       $size_x = 28;
       $size_y = 28;
 
       $colors = array(
         'light' => 'lb',
         'dark'  => 'dark',
         'blue'  => 'blue',
       );
     } else {
       $scales = array(
         '4x' => 1,
       );
       $variant_name = 'apps-xlarge';
       $variant_short = '-xlarge';
       $size_x = 56;
       $size_y = 56;
 
       $colors = array(
         'dark'  => 'dark',
         /*
 
         TODO: These are available but not currently used.
 
         'blue'  => 'blue',
         'light' => 'lb',
         */
       );
     }
 
 
     $apps = $this->getDirectoryList('apps_dark_1x');
 
     $template = id(new PhutilSprite())
       ->setSourceSize($size_x, $size_y);
 
     $sprites = array();
     foreach ($apps as $app) {
       foreach ($colors as $color => $color_path) {
 
         $css = '.apps-'.$app.'-'.$color.$variant_short;
         if ($color == 'blue' && $variant_name == 'apps-large') {
           $css .= ', .phabricator-crumb-view:hover .apps-'.$app.'-dark-large';
         }
 
         $sprite = id(clone $template)
           ->setName('apps-'.$app.'-'.$color.$variant_short)
           ->setTargetCSS($css);
 
         foreach ($scales as $scale_name => $scale) {
           $path = $this->getPath(
             'apps_'.$color_path.'_'.$scale_name.'/'.$app.'.png');
           $sprite->setSourceFile($path, $scale);
         }
 
         $sprites[] = $sprite;
       }
     }
 
     $sheet = $this->buildSheet($variant_name, count($scales) > 1);
     $sheet->setScales($scales);
     foreach ($sprites as $sprite) {
       $sheet->addSprite($sprite);
     }
 
     return $sheet;
   }
 
 
   private function getPath($to_path = null) {
     $root = dirname(phutil_get_library_root('phabricator'));
     return $root.'/resources/sprite/'.$to_path;
   }
 
   private function getDirectoryList($dir) {
     $path = $this->getPath($dir);
 
     $result = array();
 
     $images = Filesystem::listDirectory($path, $include_hidden = false);
     foreach ($images as $image) {
       if (!preg_match('/\.png$/', $image)) {
         throw new Exception(
           "Expected file '{$image}' in '{$path}' to be a sprite source ".
           "ending in '.png'.");
       }
       $result[] = substr($image, 0, -4);
     }
 
     return $result;
   }
 
   private function buildSheet(
     $name,
     $has_retina,
     $type = null,
     $extra_css = '') {
 
     $sheet = new PhutilSpriteSheet();
 
     $at = '@';
 
     switch ($type) {
       case PhutilSpriteSheet::TYPE_STANDARD:
       default:
         $type = PhutilSpriteSheet::TYPE_STANDARD;
         $repeat_rule = 'no-repeat';
         break;
       case PhutilSpriteSheet::TYPE_REPEAT_X:
         $repeat_rule = 'repeat-x';
         break;
       case PhutilSpriteSheet::TYPE_REPEAT_Y:
         $repeat_rule = 'repeat-y';
         break;
     }
 
     $retina_rules = null;
     if ($has_retina) {
       $retina_rules = <<<EOCSS
 @media
 only screen and (min-device-pixel-ratio: 1.5),
 only screen and (-webkit-min-device-pixel-ratio: 1.5) {
   .sprite-{$name}{$extra_css} {
     background-image: url(/rsrc/image/sprite-{$name}-X2.png);
     background-size: {X}px {Y}px;
   }
 }
 EOCSS;
     }
 
     $sheet->setSheetType($type);
     $sheet->setCSSHeader(<<<EOCSS
 /**
  * @provides sprite-{$name}-css
  * {$at}generated
  */
 
 .sprite-{$name}{$extra_css} {
   background-image: url(/rsrc/image/sprite-{$name}.png);
   background-repeat: {$repeat_rule};
 }
 
 {$retina_rules}
 
 EOCSS
 );
 
     return $sheet;
   }
 }
 
 
diff --git a/src/view/form/control/PhabricatorRemarkupControl.php b/src/view/form/control/PhabricatorRemarkupControl.php
index 35ed28ca07..c71c0d162e 100644
--- a/src/view/form/control/PhabricatorRemarkupControl.php
+++ b/src/view/form/control/PhabricatorRemarkupControl.php
@@ -1,191 +1,191 @@
 <?php
 
 final class PhabricatorRemarkupControl extends AphrontFormTextAreaControl {
   private $disableMacro = false;
 
   public function setDisableMacros($disable) {
     $this->disableMacro = $disable;
     return $this;
   }
 
   protected function renderInput() {
     $id = $this->getID();
     if (!$id) {
       $id = celerity_generate_unique_node_id();
       $this->setID($id);
     }
 
     // We need to have this if previews render images, since Ajax can not
     // currently ship JS or CSS.
     require_celerity_resource('lightbox-attachment-css');
 
     Javelin::initBehavior(
       'aphront-drag-and-drop-textarea',
       array(
         'target'          => $id,
         'activatedClass'  => 'aphront-textarea-drag-and-drop',
         'uri'             => '/file/dropupload/',
       ));
 
     Javelin::initBehavior('phabricator-remarkup-assist', array());
     Javelin::initBehavior('phabricator-tooltips', array());
 
     $actions = array(
       'b'     => array(
         'tip' => pht('Bold'),
       ),
       'i'     => array(
         'tip' => pht('Italics'),
       ),
       'tt'    => array(
         'tip' => pht('Monospaced'),
       ),
       array(
         'spacer' => true,
       ),
       'ul' => array(
         'tip' => pht('Bulleted List'),
       ),
       'ol' => array(
         'tip' => pht('Numbered List'),
       ),
       'code' => array(
         'tip' => pht('Code Block'),
       ),
       'table' => array(
         'tip' => pht('Table'),
       )
     );
     if (!$this->disableMacro and function_exists('imagettftext')) {
       $actions[] = array(
         'spacer' => true,
         );
       $actions['meme'] = array(
         'tip' => pht('Meme'),
       );
     }
 
     $actions['help'] = array(
         'tip' => pht('Help'),
         'align' => 'right',
         'href'  => PhabricatorEnv::getDoclink(
           'article/Remarkup_Reference.html'),
       );
 
     $actions[] = array(
       'spacer' => true,
       'align' => 'right',
     );
 
     $is_serious = PhabricatorEnv::getEnvConfig(
       'phabricator.serious-business');
 
     $actions['order'] = array(
       'tip' => $is_serious
         ? pht('Fullscreen Mode')
         : pht('Order Mode'),
       'align' => 'right',
     );
 
     if (!$is_serious) {
       $actions['chaos'] = array(
         'tip' => pht('Chaos Mode'),
         'align' => 'right',
       );
     }
 
     $buttons = array();
     foreach ($actions as $action => $spec) {
 
       $classes = array();
 
       if (idx($spec, 'align') == 'right') {
         $classes[] = 'remarkup-assist-right';
       }
 
       if (idx($spec, 'spacer')) {
         $classes[] = 'remarkup-assist-separator';
         $buttons[] = phutil_tag(
           'span',
           array(
             'class' => implode(' ', $classes),
           ),
           '');
         continue;
       } else {
         $classes[] = 'remarkup-assist-button';
       }
 
       $href = idx($spec, 'href', '#');
       if ($href == '#') {
         $meta = array('action' => $action);
         $mustcapture = true;
         $target = null;
       } else {
         $meta = array();
         $mustcapture = null;
         $target = '_blank';
       }
 
       $tip = idx($spec, 'tip');
       if ($tip) {
         $meta['tip'] = $tip;
       }
 
-      require_celerity_resource('sprite-icon-css');
+      require_celerity_resource('sprite-icons-css');
 
       $buttons[] = javelin_tag(
         'a',
         array(
           'class'       => implode(' ', $classes),
           'href'        => $href,
           'sigil'       => 'remarkup-assist has-tooltip',
           'meta'        => $meta,
           'mustcapture' => $mustcapture,
           'target'      => $target,
           'tabindex'    => -1,
         ),
         phutil_tag(
           'div',
           array(
-            'class' => 'remarkup-assist sprite-icon remarkup-assist-'.$action,
+            'class' => 'remarkup-assist sprite-icons remarkup-assist-'.$action,
           ),
           ''));
     }
 
     $buttons = phutil_tag(
       'div',
       array(
         'class' => 'remarkup-assist-bar',
       ),
       $buttons);
 
     $monospaced_textareas = null;
     $monospaced_textareas_class = null;
     $user = $this->getUser();
 
     if ($user) {
       $monospaced_textareas = $user
         ->loadPreferences()
         ->getPreference(
           PhabricatorUserPreferences::PREFERENCE_MONOSPACED_TEXTAREAS);
       if ($monospaced_textareas == 'enabled') {
         $monospaced_textareas_class = 'PhabricatorMonospaced';
       }
     }
 
     $this->setCustomClass(
       'remarkup-assist-textarea '.$monospaced_textareas_class);
 
     return javelin_tag(
       'div',
       array(
         'sigil' => 'remarkup-assist-control',
       ),
       array(
         $buttons,
         parent::renderInput(),
       ));
   }
 
 }
diff --git a/src/view/layout/PhabricatorActionView.php b/src/view/layout/PhabricatorActionView.php
index 9cac7a6723..40564b0809 100644
--- a/src/view/layout/PhabricatorActionView.php
+++ b/src/view/layout/PhabricatorActionView.php
@@ -1,156 +1,156 @@
 <?php
 
 final class PhabricatorActionView extends AphrontView {
 
   private $name;
   private $icon;
   private $href;
   private $disabled;
   private $workflow;
   private $renderAsForm;
   private $download;
 
   public function setDownload($download) {
     $this->download = $download;
     return $this;
   }
 
   public function getDownload() {
     return $this->download;
   }
 
   public function setHref($href) {
     $this->href = $href;
     return $this;
   }
 
   public function setIcon($icon) {
     $this->icon = $icon;
     return $this;
   }
 
   public function setName($name) {
     $this->name = $name;
     return $this;
   }
 
   public function setDisabled($disabled) {
     $this->disabled = $disabled;
     return $this;
   }
 
   public function setWorkflow($workflow) {
     $this->workflow = $workflow;
     return $this;
   }
 
   public function setRenderAsForm($form) {
     $this->renderAsForm = $form;
     return $this;
   }
 
   public function render() {
 
     $icon = null;
     if ($this->icon) {
 
       $suffix = '';
       if ($this->disabled) {
         $suffix = '-grey';
       }
 
-      require_celerity_resource('sprite-icon-css');
+      require_celerity_resource('sprite-icons-css');
       $icon = phutil_tag(
         'span',
         array(
-          'class' => 'phabricator-action-view-icon sprite-icon '.
-                       'action-'.$this->icon.$suffix,
+          'class' => 'phabricator-action-view-icon sprite-icons '.
+                       'icons-'.$this->icon.$suffix,
         ),
         '');
     }
 
     if ($this->href) {
       if ($this->renderAsForm) {
         if (!$this->user) {
           throw new Exception(
             'Call setUser() when rendering an action as a form.');
         }
 
         $item = javelin_tag(
           'button',
           array(
             'class' => 'phabricator-action-view-item',
           ),
           $this->name);
 
         $sigils = array();
         if ($this->workflow) {
           $sigils[] = 'workflow';
         }
         if ($this->download) {
           $sigils[] = 'download';
         }
 
         $item = phabricator_form(
           $this->user,
           array(
             'action'    => $this->href,
             'method'    => 'POST',
             'sigil'     => implode(' ', $sigils),
           ),
           $item);
       } else {
         $item = javelin_tag(
           'a',
           array(
             'href'  => $this->href,
             'class' => 'phabricator-action-view-item',
             'sigil' => $this->workflow ? 'workflow' : null,
           ),
           $this->name);
       }
     } else {
       $item = phutil_tag(
         'span',
         array(
           'class' => 'phabricator-action-view-item',
         ),
         $this->name);
     }
 
     $classes = array();
     $classes[] = 'phabricator-action-view';
     if ($this->disabled) {
       $classes[] = 'phabricator-action-view-disabled';
     }
 
     return phutil_tag(
       'li',
       array(
         'class' => implode(' ', $classes),
       ),
       array($icon, $item));
   }
 
   public static function getAvailableIcons() {
     $root = dirname(phutil_get_library_root('phabricator'));
     $path = $root.'/resources/sprite/manifest/icon.json';
     $data = Filesystem::readFile($path);
     $manifest = json_decode($data, true);
 
     $results = array();
     $prefix = 'action-';
     foreach ($manifest['sprites'] as $sprite) {
       $name = $sprite['name'];
       if (preg_match('/-(white|grey)$/', $name)) {
         continue;
       }
       if (!strncmp($name, $prefix, strlen($prefix))) {
         $results[] = substr($name, strlen($prefix));
       }
     }
 
     return $results;
   }
 
 }
diff --git a/src/view/layout/PhabricatorCrumbsView.php b/src/view/layout/PhabricatorCrumbsView.php
index c3ad77a222..4584e775f0 100644
--- a/src/view/layout/PhabricatorCrumbsView.php
+++ b/src/view/layout/PhabricatorCrumbsView.php
@@ -1,126 +1,126 @@
 <?php
 
 final class PhabricatorCrumbsView extends AphrontView {
 
   private $crumbs = array();
   private $actions = array();
   private $actionListID = null;
 
   protected function canAppendChild() {
     return false;
   }
 
   public function addCrumb(PhabricatorCrumbView $crumb) {
     $this->crumbs[] = $crumb;
     return $this;
   }
 
   public function addAction(PhabricatorMenuItemView $action) {
     $this->actions[] = $action;
     return $this;
   }
 
   public function setActionList(PhabricatorActionListView $list) {
     $this->actionListID = celerity_generate_unique_node_id();
     $list->setId($this->actionListID);
     return $this;
   }
 
   public function render() {
     require_celerity_resource('phabricator-crumbs-view-css');
 
     $action_view = null;
     if (($this->actions) || ($this->actionListID)) {
       $actions = array();
       foreach ($this->actions as $action) {
         $icon = null;
         if ($action->getIcon()) {
           $icon = phutil_tag(
             'span',
             array(
-              'class' => 'sprite-icon action-'.$action->getIcon(),
+              'class' => 'sprite-icons icons-'.$action->getIcon(),
             ),
             '');
         }
         $name = phutil_tag(
           'span',
             array(
               'class' => 'phabricator-crumbs-action-name'
             ),
           $action->getName()
         );
 
         $actions[] = javelin_tag(
           'a',
           array(
             'href' => $action->getHref(),
             'class' => 'phabricator-crumbs-action',
             'sigil' => $action->getWorkflow() ? 'workflow' : null,
           ),
           array(
             $icon,
             $name,
           ));
       }
 
       if ($this->actionListID) {
         $icon_id = celerity_generate_unique_node_id();
         $icon = phutil_tag(
           'span',
             array(
-              'class' => 'sprite-icon action-action-menu'
+              'class' => 'sprite-icons action-action-menu'
             ),
             '');
         $name = phutil_tag(
           'span',
             array(
               'class' => 'phabricator-crumbs-action-name'
             ),
           pht('Actions'));
 
         $actions[] = javelin_tag(
           'a',
             array(
               'href'  => '#',
               'class' =>
                 'phabricator-crumbs-action phabricator-crumbs-action-menu',
               'sigil' => 'jx-toggle-class',
               'id'    => $icon_id,
               'meta'  => array(
                 'map' => array(
                   $this->actionListID => 'phabricator-action-list-toggle',
                   $icon_id => 'phabricator-crumbs-action-menu-open'
                 ),
               ),
             ),
             array(
               $icon,
               $name,
             ));
       }
 
       $action_view = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-crumbs-actions',
         ),
         $actions);
     }
 
     if ($this->crumbs) {
       last($this->crumbs)->setIsLastCrumb(true);
     }
 
     return phutil_tag(
       'div',
       array(
         'class' => 'phabricator-crumbs-view '.
                    'sprite-gradient gradient-breadcrumbs',
       ),
       array(
         $action_view,
         $this->crumbs,
       ));
   }
 
 }
diff --git a/src/view/layout/PhabricatorMenuItemView.php b/src/view/layout/PhabricatorMenuItemView.php
index dcf2ae3482..3bea5539d2 100644
--- a/src/view/layout/PhabricatorMenuItemView.php
+++ b/src/view/layout/PhabricatorMenuItemView.php
@@ -1,145 +1,140 @@
 <?php
 
 final class PhabricatorMenuItemView extends AphrontTagView {
 
   const TYPE_LINK     = 'type-link';
   const TYPE_SPACER   = 'type-spacer';
   const TYPE_LABEL    = 'type-label';
   const TYPE_BUTTON   = 'type-button';
   const TYPE_CUSTOM   = 'type-custom';
 
   private $name;
   private $href;
   private $type = self::TYPE_LINK;
   private $isExternal;
   private $key;
   private $icon;
   private $selected;
 
   public function setProperty($property) {
     $this->property = $property;
     return $this;
   }
 
   public function getProperty() {
     return $this->property;
   }
 
   public function setSelected($selected) {
     $this->selected = $selected;
     return $this;
   }
 
   public function getSelected() {
     return $this->selected;
   }
 
   public function setIcon($icon) {
     $this->icon = $icon;
     return $this;
   }
 
   public function getIcon() {
     return $this->icon;
   }
 
   public function setKey($key) {
     $this->key = (string)$key;
     return $this;
   }
 
   public function getKey() {
     return $this->key;
   }
 
   public function setType($type) {
     $this->type = $type;
     return $this;
   }
 
   public function getType() {
     return $this->type;
   }
 
   public function setHref($href) {
     $this->href = $href;
     return $this;
   }
 
   public function getHref() {
     return $this->href;
   }
 
   public function setName($name) {
     $this->name = $name;
     return $this;
   }
 
   public function getName() {
     return $this->name;
   }
 
   public function setIsExternal($is_external) {
     $this->isExternal = $is_external;
     return $this;
   }
 
   public function getIsExternal() {
     return $this->isExternal;
   }
 
   protected function getTagName() {
     return $this->href ? 'a' : 'div';
   }
 
   protected function getTagAttributes() {
     return array(
       'class' => array(
         'phabricator-menu-item-view',
         'phabricator-menu-item-'.$this->type,
       ),
       'href' => $this->href,
     );
   }
 
   protected function getTagContent() {
     $name = null;
     $icon = null;
 
     if ($this->name) {
-
       $external = null;
       if ($this->isExternal) {
         $external = " \xE2\x86\x97";
       }
 
-      if ($this->icon) {
-        require_celerity_resource('sprite-icon-css');
-        $icon = phutil_tag(
-          'span',
-            array(
-              'class' => 'phabricator-menu-item-icon sprite-icon '.
-                       'action-'.$this->icon,
-        ),
-        '');
-      }
-
       $name = phutil_tag(
         'span',
         array(
           'class' => 'phabricator-menu-item-name',
         ),
         array(
           $this->name,
           $external,
         ));
     }
 
+    if ($this->icon) {
+      $icon = id(new PHUIIconView())
+        ->addClass('phabricator-menu-item-icon')
+        ->setSpriteSheet(PHUIIconView::SPRITE_ICONS)
+        ->setSpriteIcon($this->icon);
+    }
+
     return array(
       $icon,
       $this->renderChildren(),
       $name,
     );
   }
 
 }
diff --git a/src/view/layout/PhabricatorObjectItemView.php b/src/view/layout/PhabricatorObjectItemView.php
index f14e824cfa..17e98a4b8c 100644
--- a/src/view/layout/PhabricatorObjectItemView.php
+++ b/src/view/layout/PhabricatorObjectItemView.php
@@ -1,439 +1,477 @@
 <?php
 
 final class PhabricatorObjectItemView extends AphrontTagView {
 
   private $objectName;
   private $header;
   private $subhead;
   private $href;
   private $attributes = array();
   private $icons = array();
   private $barColor;
   private $object;
   private $effect;
   private $footIcons = array();
   private $handleIcons = array();
   private $bylines = array();
   private $grippable;
+  private $actions = array();
 
   public function setObjectName($name) {
     $this->objectName = $name;
     return $this;
   }
 
   public function setGrippable($grippable) {
     $this->grippable = $grippable;
     return $this;
   }
 
   public function getGrippable() {
     return $this->grippable;
   }
 
   public function setEffect($effect) {
     $this->effect = $effect;
     return $this;
   }
 
   public function getEffect() {
     return $this->effect;
   }
 
   public function setObject($object) {
     $this->object = $object;
     return $this;
   }
 
   public function getObject() {
     return $this->object;
   }
 
   public function setHref($href) {
     $this->href = $href;
     return $this;
   }
 
   public function getHref() {
     return $this->href;
   }
 
   public function setHeader($header) {
     $this->header = $header;
     return $this;
   }
 
   public function setSubHead($subhead) {
     $this->subhead = $subhead;
     return $this;
   }
 
   public function getHeader() {
     return $this->header;
   }
 
   public function addByline($byline) {
     $this->bylines[] = $byline;
     return $this;
   }
 
+  public function addAction(PhabricatorMenuItemView $action) {
+    if (count($this->actions) >= 3) {
+      throw new Exception("Limit 3 actions per item.");
+    }
+    $this->actions[] = $action;
+    return $this;
+  }
+
   public function addIcon($icon, $label = null, $href = null) {
     $this->icons[] = array(
       'icon'  => $icon,
       'label' => $label,
       'href' => $href,
     );
     return $this;
   }
 
   public function addFootIcon($icon, $label = null) {
     $this->footIcons[] = array(
       'icon' => $icon,
       'label' => $label,
     );
     return $this;
   }
 
   public function addHandleIcon(
     PhabricatorObjectHandle $handle,
     $label = null) {
     $this->handleIcons[] = array(
       'icon' => $handle,
       'label' => $label,
     );
     return $this;
   }
 
   public function setBarColor($bar_color) {
     $this->barColor = $bar_color;
     return $this;
   }
 
   public function getBarColor() {
     return $this->barColor;
   }
 
   public function addAttribute($attribute) {
     $this->attributes[] = $attribute;
     return $this;
   }
 
   protected function getTagName() {
     return 'li';
   }
 
   protected function getTagAttributes() {
     $item_classes = array();
     $item_classes[] = 'phabricator-object-item';
 
     if ($this->icons) {
       $item_classes[] = 'phabricator-object-item-with-icons';
     }
 
     if ($this->attributes) {
       $item_classes[] = 'phabricator-object-item-with-attrs';
     }
 
     if ($this->handleIcons) {
       $item_classes[] = 'phabricator-object-item-with-handle-icons';
     }
 
     if ($this->barColor) {
       $item_classes[] = 'phabricator-object-item-bar-color-'.$this->barColor;
     }
 
     if ($this->footIcons) {
       $item_classes[] = 'phabricator-object-item-with-foot-icons';
     }
 
     if ($this->bylines) {
       $item_classes[] = 'phabricator-object-item-with-bylines';
     }
 
+    if ($this->actions) {
+      $n = count($this->actions);
+      $item_classes[] = 'phabricator-object-item-with-actions';
+      $item_classes[] = 'phabricator-object-item-with-'.$n.'-actions';
+    }
+
     switch ($this->effect) {
       case 'highlighted':
         $item_classes[] = 'phabricator-object-item-highlighted';
         break;
       case 'selected':
         $item_classes[] = 'phabricator-object-item-selected';
         break;
       case null:
         break;
       default:
         throw new Exception(pht("Invalid effect!"));
     }
 
     if ($this->getGrippable()) {
       $item_classes[] = 'phabricator-object-item-grippable';
     }
 
     return array(
       'class' => $item_classes,
     );
   }
 
   public function getTagContent() {
     $content_classes = array();
     $content_classes[] = 'phabricator-object-item-content';
 
     $header_name = null;
     if ($this->objectName) {
       $header_name = array(
         phutil_tag(
           'span',
           array(
             'class' => 'phabricator-object-item-objname',
           ),
           $this->objectName),
         ' ',
       );
     }
 
     $header_link = phutil_tag(
       $this->href ? 'a' : 'div',
       array(
         'href' => $this->href,
         'class' => 'phabricator-object-item-link',
       ),
       $this->header);
 
     $header = javelin_tag(
       'div',
       array(
         'class' => 'phabricator-object-item-name',
         'sigil' => 'slippery',
       ),
       array(
         $header_name,
         $header_link,
       ));
 
     $icons = array();
     if ($this->icons) {
       $icon_list = array();
       foreach ($this->icons as $spec) {
         $icon = $spec['icon'];
 
         $icon = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-object-item-icon-image '.
-                       'sprite-icon action-'.$icon,
+                       'sprite-icons icons-'.$icon,
           ),
           '');
 
         $label = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-object-item-icon-label',
           ),
           $spec['label']);
 
         if ($spec['href']) {
           $icon_href = phutil_tag(
             'a',
             array('href' => $spec['href']),
             array($label, $icon));
         } else {
           $icon_href = array($label, $icon);
         }
 
         $classes = array();
         $classes[] = 'phabricator-object-item-icon';
         if ($spec['icon'] == 'none') {
           $classes[] = 'phabricator-object-item-icon-none';
         }
 
         $icon_list[] = phutil_tag(
           'li',
           array(
             'class' => implode(' ', $classes),
           ),
           $icon_href);
       }
 
       $icons[] = phutil_tag(
         'ul',
         array(
           'class' => 'phabricator-object-item-icons',
         ),
         $icon_list);
     }
 
     if ($this->handleIcons) {
       $handle_bar = array();
       foreach ($this->handleIcons as $icon) {
         $handle_bar[] = $this->renderHandleIcon($icon['icon'], $icon['label']);
       }
       $icons[] = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-object-item-handle-icons',
         ),
         $handle_bar);
     }
 
     $bylines = array();
     if ($this->bylines) {
       foreach ($this->bylines as $byline) {
         $bylines[] = phutil_tag(
           'div',
           array(
             'class' => 'phabricator-object-item-byline',
           ),
           $byline);
       }
       $bylines = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-object-item-bylines',
         ),
         $bylines);
     }
 
     $subhead = null;
     if ($this->subhead) {
       $subhead = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-object-item-subhead',
         ),
         $this->subhead);
     }
 
     if ($icons) {
       $icons = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-object-icon-pane',
         ),
         $icons);
     }
 
     $attrs = null;
     if ($this->attributes) {
       $attrs = array();
       $spacer = phutil_tag(
         'span',
         array(
           'class' => 'phabricator-object-item-attribute-spacer',
         ),
         "\xC2\xB7");
       $first = true;
       foreach ($this->attributes as $attribute) {
         $attrs[] = phutil_tag(
           'li',
           array(
             'class' => 'phabricator-object-item-attribute',
           ),
           array(
             ($first ? null : $spacer),
             $attribute,
           ));
         $first = false;
       }
 
       $attrs = phutil_tag(
         'ul',
         array(
           'class' => 'phabricator-object-item-attributes',
         ),
         $attrs);
     }
 
     $foot = null;
     if ($this->footIcons) {
       $foot_bar = array();
       foreach ($this->footIcons as $icon) {
         $foot_bar[] = $this->renderFootIcon($icon['icon'], $icon['label']);
       }
       $foot = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-object-item-foot-icons',
         ),
         $foot_bar);
     }
 
     $grippable = null;
     if ($this->getGrippable()) {
       $grippable = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-object-item-grip',
         ),
         '');
     }
 
     $content = phutil_tag(
       'div',
       array(
         'class' => implode(' ', $content_classes),
       ),
       array(
         $subhead,
         $attrs,
         $this->renderChildren(),
         $foot,
       ));
 
-    return phutil_tag(
+    $box = phutil_tag(
       'div',
       array(
-        'class' => 'phabricator-object-item-frame',
+        'class' => 'phabricator-object-item-content-box',
       ),
       array(
         $grippable,
         $header,
         $icons,
         $bylines,
         $content,
       ));
+
+    $actions = array();
+    if ($this->actions) {
+      foreach (array_reverse($this->actions) as $action) {
+        $actions[] = $action;
+      }
+      $actions = phutil_tag(
+        'div',
+        array(
+          'class' => 'phabricator-object-item-actions',
+        ),
+        $actions);
+    }
+
+    return phutil_tag(
+      'div',
+      array(
+        'class' => 'phabricator-object-item-frame',
+      ),
+      array(
+        $actions,
+        $box,
+      ));
   }
 
   private function renderFootIcon($icon, $label) {
-    require_celerity_resource('sprite-icon-css');
+    require_celerity_resource('sprite-icons-css');
 
     $icon = phutil_tag(
       'span',
       array(
-        'class' => 'sprite-icon action-'.$icon,
+        'class' => 'sprite-icons icons-'.$icon,
       ),
       '');
 
     $label = phutil_tag(
       'span',
       array(
       ),
       $label);
 
     return phutil_tag(
       'span',
       array(
         'class' => 'phabricator-object-item-foot-icon',
       ),
       array($icon, $label));
   }
 
 
   private function renderHandleIcon(PhabricatorObjectHandle $handle, $label) {
     Javelin::initBehavior('phabricator-tooltips');
 
     $options = array(
       'class' => 'phabricator-object-item-handle-icon',
       'style' => 'background-image: url('.$handle->getImageURI().')',
     );
 
     if (strlen($label)) {
       $options['sigil'] = 'has-tooltip';
       $options['meta']  = array('tip' => $label);
     }
 
     return javelin_tag(
       'span',
       $options,
       '');
   }
 
 
 
 }
diff --git a/src/view/layout/PhabricatorPinboardItemView.php b/src/view/layout/PhabricatorPinboardItemView.php
index 708efcff66..9e493904ac 100644
--- a/src/view/layout/PhabricatorPinboardItemView.php
+++ b/src/view/layout/PhabricatorPinboardItemView.php
@@ -1,114 +1,114 @@
 <?php
 
 final class PhabricatorPinboardItemView extends AphrontView {
 
   private $imageURI;
   private $uri;
   private $header;
   private $iconBlock = array();
 
   private $imageWidth;
   private $imageHeight;
 
   public function setHeader($header) {
     $this->header = $header;
     return $this;
   }
 
   public function setURI($uri) {
     $this->uri = $uri;
     return $this;
   }
 
   public function setImageURI($image_uri) {
     $this->imageURI = $image_uri;
     return $this;
   }
 
   public function setImageSize($x, $y) {
     $this->imageWidth = $x;
     $this->imageHeight = $y;
     return $this;
   }
 
   public function addIconCount($icon, $count) {
     $this->iconBlock[] = array($icon, $count);
     return $this;
   }
 
   public function render() {
     $header = null;
     if ($this->header) {
       $header = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-pinboard-item-header',
         ),
         phutil_tag('a', array('href' => $this->uri), $this->header));
     }
 
     $image = phutil_tag(
       'a',
       array(
         'href' => $this->uri,
         'class' => 'phabricator-pinboard-item-image-link',
       ),
       phutil_tag(
         'img',
         array(
           'src'     => $this->imageURI,
           'width'   => $this->imageWidth,
           'height'  => $this->imageHeight,
         )));
 
     $icons = array();
     if ($this->iconBlock) {
       $icon_list = array();
       foreach ($this->iconBlock as $block) {
         $icon = phutil_tag(
           'span',
           array(
             'class' =>
-              'phabricator-pinboard-icon sprite-icon action-'.$block[0].'-grey',
+              'phabricator-pinboard-icon sprite-icons icons-'.$block[0].'-grey',
           ),
           '');
         $count = phutil_tag('span', array(), $block[1]);
         $icon_list[] = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-pinboard-item-count',
           ),
           array($icon, $count));
       }
       $icons = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-pinboard-icons',
         ),
         $icon_list);
     }
 
     $content = $this->renderChildren();
     if ($content) {
       $content = phutil_tag(
         'div',
         array(
           'class' => 'phabricator-pinboard-item-content',
         ),
         $content);
     }
 
     return phutil_tag(
       'div',
       array(
         'class' => 'phabricator-pinboard-item-view',
       ),
       array(
         $header,
         $image,
         $icons,
         $content,
       ));
   }
 
 }
diff --git a/src/view/layout/PhabricatorTimelineEventView.php b/src/view/layout/PhabricatorTimelineEventView.php
index 463f89452e..fd9faa04a8 100644
--- a/src/view/layout/PhabricatorTimelineEventView.php
+++ b/src/view/layout/PhabricatorTimelineEventView.php
@@ -1,304 +1,304 @@
 <?php
 
 final class PhabricatorTimelineEventView extends AphrontView {
 
   private $userHandle;
   private $title;
   private $icon;
   private $color;
   private $classes = array();
   private $contentSource;
   private $dateCreated;
   private $anchor;
   private $isEditable;
   private $isEdited;
   private $transactionPHID;
   private $isPreview;
 
   public function setTransactionPHID($transaction_phid) {
     $this->transactionPHID = $transaction_phid;
     return $this;
   }
 
   public function getTransactionPHID() {
     return $this->transactionPHID;
   }
 
   public function setIsEdited($is_edited) {
     $this->isEdited = $is_edited;
     return $this;
   }
 
   public function getIsEdited() {
     return $this->isEdited;
   }
 
   public function setIsPreview($is_preview) {
     $this->isPreview = $is_preview;
     return $this;
   }
 
   public function getIsPreview() {
     return $this->isPreview;
   }
 
   public function setIsEditable($is_editable) {
     $this->isEditable = $is_editable;
     return $this;
   }
 
   public function getIsEditable() {
     return $this->isEditable;
   }
 
   public function setDateCreated($date_created) {
     $this->dateCreated = $date_created;
     return $this;
   }
 
   public function getDateCreated() {
     return $this->dateCreated;
   }
 
   public function setContentSource(PhabricatorContentSource $content_source) {
     $this->contentSource = $content_source;
     return $this;
   }
 
   public function getContentSource() {
     return $this->contentSource;
   }
 
   public function setUserHandle(PhabricatorObjectHandle $handle) {
     $this->userHandle = $handle;
     return $this;
   }
 
   public function setAnchor($anchor) {
     $this->anchor = $anchor;
     return $this;
   }
 
   public function setTitle($title) {
     $this->title = $title;
     return $this;
   }
 
   public function addClass($class) {
     $this->classes[] = $class;
     return $this;
   }
 
   public function setIcon($icon) {
     $this->icon = $icon;
     return $this;
   }
 
   public function setColor($color) {
     $this->color = $color;
     return $this;
   }
 
   public function render() {
     $content = $this->renderChildren();
 
     $title = $this->title;
     if (($title === null) && $this->isEmptyContent($content)) {
       $title = '';
     }
 
     $extra = $this->renderExtra();
 
     if ($title !== null || $extra !== null) {
       $title_classes = array();
       $title_classes[] = 'phabricator-timeline-title';
 
       $icon = null;
       if ($this->icon) {
         $title_classes[] = 'phabricator-timeline-title-with-icon';
 
         $icon = phutil_tag(
           'span',
           array(
             'class' => 'phabricator-timeline-icon-fill',
           ),
           phutil_tag(
             'span',
             array(
-              'class' => 'phabricator-timeline-icon sprite-icon '.
-                         'action-'.$this->icon.'-white',
+              'class' => 'phabricator-timeline-icon sprite-icons '.
+                         'icons-'.$this->icon.'-white',
             ),
             ''));
       }
 
       $title = phutil_tag(
         'div',
         array(
           'class' => implode(' ', $title_classes),
         ),
         array($title, $extra));
 
       $title = array($icon, $title);
     }
 
     $wedge = phutil_tag(
       'div',
       array(
         'class' => 'phabricator-timeline-wedge phabricator-timeline-border',
       ),
       '');
 
     $image_uri = $this->userHandle->getImageURI();
     $image = phutil_tag(
       'div',
       array(
         'style' => 'background-image: url('.$image_uri.')',
         'class' => 'phabricator-timeline-image',
       ),
       '');
 
     $content_classes = array();
     $content_classes[] = 'phabricator-timeline-content';
 
     $classes = array();
     $classes[] = 'phabricator-timeline-event-view';
     $classes[] = 'phabricator-timeline-border';
     if (!$this->isEmptyContent($content)) {
       $classes[] = 'phabricator-timeline-major-event';
       $content = phutil_tag(
         'div',
         array(
           'class' => implode(' ', $content_classes),
         ),
         phutil_tag(
           'div',
           array(
             'class' => 'phabricator-timeline-inner-content',
           ),
           array(
             $title,
             phutil_tag(
               'div',
               array(
                 'class' => 'phabricator-timeline-core-content',
               ),
               $content),
           )));
       $content = array($image, $wedge, $content);
     } else {
       $classes[] = 'phabricator-timeline-minor-event';
       $content = phutil_tag(
         'div',
         array(
           'class' => implode(' ', $content_classes),
         ),
         array($image, $wedge, $title));
     }
 
     $outer_classes = $this->classes;
     $outer_classes[] = 'phabricator-timeline-shell';
     if ($this->color) {
       $outer_classes[] = 'phabricator-timeline-'.$this->color;
     }
 
     $sigil = null;
     $meta = null;
     if ($this->getTransactionPHID()) {
       $sigil = 'transaction';
       $meta = array(
         'phid' => $this->getTransactionPHID(),
         'anchor' => $this->anchor,
       );
     }
 
     return javelin_tag(
       'div',
       array(
         'class' => implode(' ', $outer_classes),
         'id' => $this->anchor ? 'anchor-'.$this->anchor : null,
         'sigil' => $sigil,
         'meta' => $meta,
       ),
       phutil_tag(
         'div',
         array(
           'class' => implode(' ', $classes),
         ),
         $content));
   }
 
   private function renderExtra() {
     $extra = array();
 
     if ($this->getIsPreview()) {
       $extra[] = pht('PREVIEW');
     } else {
       $xaction_phid = $this->getTransactionPHID();
 
 
       if ($this->getIsEdited()) {
         $extra[] = javelin_tag(
           'a',
           array(
             'href'  => '/transactions/history/'.$xaction_phid.'/',
             'sigil' => 'workflow',
           ),
           pht('Edited'));
       }
 
       if ($this->getIsEditable()) {
         $extra[] = javelin_tag(
           'a',
           array(
             'href'  => '/transactions/edit/'.$xaction_phid.'/',
             'sigil' => 'workflow transaction-edit',
           ),
           pht('Edit'));
       }
 
       $source = $this->getContentSource();
       if ($source) {
         $extra[] = id(new PhabricatorContentSourceView())
           ->setContentSource($source)
           ->setUser($this->getUser())
           ->render();
       }
 
       if ($this->getDateCreated()) {
         $date = phabricator_datetime(
           $this->getDateCreated(),
           $this->getUser());
         if ($this->anchor) {
           Javelin::initBehavior('phabricator-watch-anchor');
 
           $anchor = id(new PhabricatorAnchorView())
             ->setAnchorName($this->anchor)
             ->render();
 
           $date = array(
             $anchor,
             phutil_tag(
               'a',
               array(
                 'href' => '#'.$this->anchor,
               ),
               $date),
           );
         }
         $extra[] = $date;
       }
     }
 
     if ($extra) {
       $extra = phutil_tag(
         'span',
         array(
           'class' => 'phabricator-timeline-extra',
         ),
         phutil_implode_html(" \xC2\xB7 ", $extra));
     }
 
     return $extra;
   }
 
 }
diff --git a/src/view/phui/PHUIIconView.php b/src/view/phui/PHUIIconView.php
index e25bf6d7b9..88af517a6c 100644
--- a/src/view/phui/PHUIIconView.php
+++ b/src/view/phui/PHUIIconView.php
@@ -1,72 +1,78 @@
 <?php
 
 final class PHUIIconView extends AphrontTagView {
 
   const SPRITE_MINICONS = 'minicons';
   const SPRITE_ACTIONS = 'actions';
   const SPRITE_APPS = 'apps';
   const SPRITE_TOKENS = 'tokens';
   const SPRITE_PAYMENTS = 'payments';
+  const SPRITE_ICONS = 'icons';
 
   const HEAD_SMALL = 'phuihead-small';
   const HEAD_MEDIUM = 'phuihead-medium';
 
   private $href = null;
   private $image;
   private $headSize = null;
   private $spriteIcon;
   private $spriteSheet;
 
   public function setHref($href) {
     $this->href = $href;
     return $this;
   }
 
   public function setImage($image) {
     $this->image = $image;
     return $this;
   }
 
   public function setHeadSize($size) {
     $this->headSize = $size;
     return $this;
   }
 
   public function setSpriteIcon($sprite) {
     $this->spriteIcon = $sprite;
     return $this;
   }
 
   public function setSpriteSheet($sheet) {
     $this->spriteSheet = $sheet;
     return $this;
   }
 
   public function getTagName() {
     $tag = 'span';
     if ($this->href) {
       $tag = 'a';
     }
     return $tag;
   }
 
   public function getTagAttributes() {
     require_celerity_resource('phui-icon-view-css');
 
-    $this->addClass('phui-icon-item-link');
+    $style = null;
+    $classes = array();
+    $classes[] = 'phui-icon-view';
 
     if ($this->spriteIcon) {
       require_celerity_resource('sprite-'.$this->spriteSheet.'-css');
-      $this->addClass('sprite-'.$this->spriteSheet);
-      $this->addClass($this->spriteSheet.'-'.$this->spriteIcon);
+      $classes[] = 'sprite-'.$this->spriteSheet;
+      $classes[] = $this->spriteSheet.'-'.$this->spriteIcon;
     } else {
       if ($this->headSize) {
-        $this->addClass($this->headSize);
+        $classes[] = $this->headSize;
       }
-      $this->setStyle('background-image: url('.$this->image.');');
+      $style = 'background-image: url('.$this->image.');';
     }
 
-    $attribs = array('href' => $this->href);
-    return $attribs;
+    return array(
+      'href' => $this->href,
+      'style' => $style,
+      'class' => $classes,
+    );
   }
 }
diff --git a/webroot/rsrc/css/layout/phabricator-action-header-view.css b/webroot/rsrc/css/layout/phabricator-action-header-view.css
index cbe0e8ba33..23a7f2c0cf 100644
--- a/webroot/rsrc/css/layout/phabricator-action-header-view.css
+++ b/webroot/rsrc/css/layout/phabricator-action-header-view.css
@@ -1,58 +1,63 @@
 /**
  * @provides phabricator-action-header-view-css
  */
 
 .phabricator-action-header {
   padding: 0 5px 0 8px;
   overflow: hidden;
 }
 
 .phabricator-action-header-title {
   color: #333;
   float: left;
   font-size: 14px;
   font-weight: bold;
   line-height: 15px;
   padding: 8px 0;
   text-shadow: 0 1px 1px #fff;
   white-space: nowrap;
 }
 
 .phabricator-action-header-icon-list {
   float: right;
   padding-top: 4px;
 }
 
 .phabricator-action-header-icon-item {
   float: right;
   padding-left: 2px;
 }
 
+.phabricator-action-header-icon-item .phui-icon-view {
+  display: inline-block;
+}
+
 .phabricator-action-header-icon-item .phabricator-tag-view {
   margin: 4px 2px 0;
 }
 
 .phabricator-action-header-link {
   color: #333;
 }
 
+
 .gradient-green-header .phabricator-action-header-title,
 .gradient-red-header .phabricator-action-header-title,
 .gradient-blue-header .phabricator-action-header-title,
 .gradient-yellow-header .phabricator-action-header-title,
 .gradient-green-header .phabricator-action-header-link,
 .gradient-red-header .phabricator-action-header-link,
 .gradient-blue-header .phabricator-action-header-link,
 .gradient-yellow-header .phabricator-action-header-link {
   color: #fff;
   text-shadow: 0 -1px 1px rgba(0,0,0,.7);
 }
 
 .phabricator-action-header-title span {
   float: left;
   height: 16px;
   width: 16px;
   margin-right: 4px;
 }
 
 
diff --git a/webroot/rsrc/css/layout/phabricator-crumbs-view.css b/webroot/rsrc/css/layout/phabricator-crumbs-view.css
index 02382e65b5..2fd1fb8cba 100644
--- a/webroot/rsrc/css/layout/phabricator-crumbs-view.css
+++ b/webroot/rsrc/css/layout/phabricator-crumbs-view.css
@@ -1,113 +1,113 @@
 /**
  * @provides phabricator-crumbs-view-css
  */
 
 .phabricator-crumbs-view {
   background-color: #d8dce2;
   height: 31px;
   overflow: hidden;
   vertical-align: top;
   border-bottom: 1px solid #aaa;
 
   box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
 
   /* TODO: Position this over the slider for Differential's file tree view.
      Remove this once that gets sorted out. */
   position: relative;
 }
 
 .phabricator-crumbs-view,
 .phabricator-crumbs-view a.phabricator-crumb-view,
 .phabricator-crumbs-view a.phabricator-crumbs-action {
   color: #3d3d3d;
   font-weight: bold;
   text-decoration: none;
   text-shadow: 0 1px 2px rgba(255, 255, 255, 0.9);
 }
 
 .phabricator-crumbs-action.phabricator-crumbs-action-menu {
   display: none;
 }
 
 .device .phabricator-crumbs-action.phabricator-crumbs-action-menu {
   display: inline-block;
 }
 
 .device .phabricator-crumbs-action-menu-open {
   background: rgba(0,0,0,.1);
 }
 
 .phabricator-crumbs-view + .phabricator-header-shell {
   border-top: none;
 }
 
 .phabricator-crumbs-view a:hover {
   text-decoration: underline;
 }
 
 .phabricator-crumb-view {
   display: inline-block;
   height: 31px;
   line-height: 31px;
 }
 
 .device-phone .phabricator-crumb-view {
   display: none;
 }
 
 .device-phone .phabricator-crumb-view.phabricator-last-crumb,
 .device-phone .phabricator-crumb-view.phabricator-crumb-has-icon {
   display: inline-block;
 }
 
 .phabricator-crumb-icon {
   display: inline-block;
   width: 28px;
   height: 28px;
   margin: 2px 2px 0 13px;
   vertical-align: top;
 }
 
 .device-phone .phabricator-crumb-icon {
   margin-left: 7px;
 }
 
 .phabricator-crumbs-actions {
   float: right;
 }
 
 .phabricator-crumbs-action {
   display: inline-block;
   height: 17px;
   padding: 8px 14px 8px 24px;
   position: relative;
 }
 
 .device-phone a.phabricator-crumbs-action {
   padding: 13px 20px 4px 10px;
   border-left: 1px solid #ccc;
 }
 
 .device-phone .phabricator-crumbs-action-name {
   display: none;
 }
 
-.device-phone a.phabricator-crumbs-action .sprite-icon {
+.device-phone a.phabricator-crumbs-action .sprite-icons {
   margin-left: 5px;
 }
 
-.phabricator-crumbs-action .sprite-icon {
+.phabricator-crumbs-action .sprite-icons {
   width: 14px;
   height: 14px;
   left: 4px;
   top: 9px;
   position: absolute;
 }
 
 .phabricator-crumb-divider {
   display: inline-block;
   width: 9px;
   height: 31px;
   vertical-align: top;
   margin: 0 9px;
 }
diff --git a/webroot/rsrc/css/layout/phabricator-object-item-list-view.css b/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
index 08a93fddf8..9467495803 100644
--- a/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
+++ b/webroot/rsrc/css/layout/phabricator-object-item-list-view.css
@@ -1,394 +1,455 @@
 /**
  * @provides phabricator-object-item-list-view-css
  */
 
 .phabricator-object-item-list-view {
   padding: 8px 6px;
 }
 
 .device-desktop .phabricator-object-item-list-view {
   padding: 20px;
 }
 
 .phabricator-object-item-list-view.phabricator-object-list-flush {
   padding: 0;
 }
 
 .phabricator-object-item {
   background: #ffffff;
   border-style: solid;
   border-color: #c0c5d1;
   border-width: 0 0 0 3px;
   margin: 5px 0;
 
   overflow: hidden;
   box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.10);
 }
 
 .phabricator-object-item-frame {
   border-style: solid;
   border-color: #c0c5d1;
   border-width: 1px 1px 1px 0;
   overflow: hidden;
   position: relative;
   min-height: 29px;
 }
 
 .phabricator-object-list-cards .phabricator-object-item-frame {
   border-bottom-right-radius: 3px;
   border-top-right-radius: 3px;
 }
 
 .device-desktop .phabricator-object-item {
   margin: 0 0 5px 0;
 }
 
 .phabricator-object-item-name {
   display: inline-block;
   font-weight: bold;
   padding: 6px 8px 0;
   white-space: nowrap;
 }
 
 .phabricator-object-item-link {
   display: inline-block;
 }
 
 .phabricator-object-item-objname {
   color: #222222;
   cursor: text;
 }
 
 .phabricator-object-item-content {
   margin-top: 2px;
   overflow: hidden;
 }
 
 .phabricator-object-item-grippable {
   cursor: move;
 }
 
 .phabricator-object-item-grip {
   position: absolute;
   top: 0;
   bottom: 0;
   left: 0;
   width: 17px;
   background: url(/rsrc/image/texture/grip.png) center center no-repeat;
 }
 
 .phabricator-object-item-grippable .phabricator-object-item-frame {
   padding-left: 11px;
 }
 
+/* - Item Actions --------------------------------------------------------------
+
+  Action buttons, like "Edit" and "Delete".
+
+*/
+
+.phabricator-object-item-actions {
+  position: absolute;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  vertical-align: middle;
+  text-align: right;
+  border-left: 1px solid #c0c5d1;
+  background: #e9e9f9;
+  box-shadow: inset 1px 0 1px 0px rgba(0, 0, 0, 0.07);
+}
+
+.phabricator-object-item-actions .phabricator-menu-item-view {
+  float: right;
+  height: 100%;
+  width: 24px;
+  display: inline-block;
+  position: relative;
+}
+
+.phabricator-object-item-actions .phabricator-menu-item-view +
+.phabricator-menu-item-view {
+  border-right: 1px solid #d6d6e9;
+}
+
+.phabricator-object-item-actions .phabricator-menu-item-view:hover {
+  background: #d9d9ee;
+}
+
+.phabricator-object-item-actions .phabricator-menu-item-icon {
+  width: 14px;
+  height: 14px;
+  position: absolute;
+  display: block;
+  top: 50%;
+  margin-top: -7px;
+  left: 5px;
+}
+
+.phabricator-object-item-actions .phabricator-menu-item-name {
+  display: none;
+}
+
+.phabricator-object-item-with-1-actions .phabricator-object-item-content-box {
+  margin-right: 24px;
+}
+
+.phabricator-object-item-with-2-actions .phabricator-object-item-content-box {
+  margin-right: 48px;
+}
+
+.phabricator-object-item-with-3-actions .phabricator-object-item-content-box {
+  margin-right: 72px;
+}
+
 
 /* - Stackable List ------------------------------------------------------------
 
   Tighter, stacking list.
 
 */
 
 .phabricator-object-item-list-view.phabricator-object-list-stackable
   .phabricator-object-item {
   margin: -1px 0 0 0;
 }
 
 .phabricator-object-list-stackable .phabricator-object-item {
   border-left-width: 1px;
 }
 
 .device-desktop .phabricator-object-list-stackable
   .phabricator-object-item:hover {
   background: #e9ecf5;
 }
 
 /* - Subhead -------------------------------------------------------------------
 
   Descriptive Text or Links under the main header, before attributes.
 
 */
 
 .phabricator-object-item-subhead {
   color: #777;
   padding: 0 8px 6px;
 }
 
 
 /* - Attribute List ------------------------------------------------------------
 
   Object attributes, commonly used to render created date, etc.
 
 */
 
 .phabricator-object-item-attributes {
   padding: 0 8px 6px;
 }
 
 .phabricator-object-item-attribute {
   display: inline;
   color: #777;
 }
 
 .phabricator-object-item-attribute-spacer {
   padding: 0 4px;
 }
 
 
 /* - Icons ---------------------------------------------------------------------
 
   Icons, which show object state. On mobile, they are rendered without labels
   to save space.
 
 */
 
 .phabricator-object-icon-pane {
   float: right;
   margin-top: 4px;
 }
 
 .device .phabricator-object-item-no-icon-images .phabricator-object-icon-pane {
   display: none;
 }
 
 .phabricator-object-item-with-handle-icons .phabricator-object-item-icons {
   padding-bottom: 30px;
 }
 
 .phabricator-object-item-icons {
   float: right;
   padding: 0 10px;
 }
 
 /* NOTE: The main content is an "overflow: hidden" div which we give a right
    margin so it doesn't overlap the icons. The margin is slightly larger than
    the width + padding of the icon div, so the icons have some space even if
    the content is wider than available space. */
 
 .device-desktop .phabricator-object-icon-pane {
   width: 120px;
 }
 
 .device-desktop .phabricator-object-item-with-icons
   .phabricator-object-item-content,
 .device-desktop .phabricator-object-item-with-handle-icons
   .phabricator-object-item-content {
   margin-right: 132px;
 }
 
 .device .phabricator-object-item-icons {
   width: 18px;
 }
 
 .device .phabricator-object-item-with-icons .phabricator-object-item-content,
 .device .phabricator-object-item-with-handle-icons
   .phabricator-object-item-content {
   margin-right: 30px;
 }
 
 .device .phabricator-object-item-icon-label {
   display: none;
 }
 
 .phabricator-object-item-icon {
   vertical-align: middle;
   position: relative;
   font-size: 11px;
   color: #666666;
   text-align: right;
   white-space: nowrap;
   overflow: hidden;
 
   min-height: 18px;
   line-height: 18px;
 }
 
 .device-desktop .phabricator-object-item-icon {
   padding-right: 22px;
 }
 
 .device-desktop .phabricator-object-item-icon-none {
   padding-right: 0;
 }
 
 .phabricator-object-item-icon-image {
   position: absolute;
   right: 2px;
   top: 2px;
   width: 14px;
   height: 14px;
 }
 
 
 /* - Bar Colors ----------------------------------------------------------------
 
   Colors for the left-hand border bars, used to indicate object status or other
   attributes.
 
 */
 
 .phabricator-object-item-bar-color-red {
   border-left-color: #cc0000;
 }
 
 .phabricator-object-item-bar-color-orange {
   border-left-color: #cc7300;
 }
 
 .phabricator-object-item-bar-color-yellow {
   border-left-color: #ccc000;
 }
 
 .phabricator-object-item-bar-color-green {
   border-left-color: #009b2d;
 }
 
 .phabricator-object-item-bar-color-sky {
   border-left-color: #6498cf;
 }
 
 .phabricator-object-item-bar-color-blue {
   border-left-color: #00659a;
 }
 
 .phabricator-object-item-bar-color-indigo {
   border-left-color: #3a00cc;
 }
 
 .phabricator-object-item-bar-color-violet {
   border-left-color: #67009b;
 }
 
 .phabricator-object-item-bar-color-magenta {
   border-left-color: #cc00c0;
 }
 
 .phabricator-object-item-bar-color-grey {
   border-left-color: #999999;
 }
 
 .phabricator-object-item-bar-color-black {
   border-left-color: #333333;
 }
 
 
 /* - Effects -------------------------------------------------------------------
 
   Effects like highlighted items.
 
 */
 
 .phabricator-object-item-highlighted {
   background: #ffffb2;
 }
 
 .phabricator-object-item-selected {
   background: #bfdcff;
 }
 
 
 /* - Foot Icons ----------------------------------------------------------------
 
   Object counts shown in the footer.
 
 */
 
 .phabricator-object-item-foot-icons {
   margin-left: 10px;
   bottom: 0;
   position: absolute;
 }
 
 .phabricator-object-item-with-foot-icons .phabricator-object-item-content {
   padding-bottom: 22px;
 }
 
 .phabricator-object-item-foot-icon {
   display: inline-block;
   background: #909090;
   color: #ffffff;
   font-weight: bold;
   margin-right: 3px;
   padding: 1px 4px 0 22px;
   height: 19px;
   vertical-align: middle;
   position: relative;
 }
 
-.phabricator-object-item-foot-icon .sprite-icon {
+.phabricator-object-item-foot-icon .sprite-icons {
   width: 14px;
   height: 14px;
   position: absolute;
   left: 4px;
   top: 3px;
 }
 
 
 /* - Handle Icons --------------------------------------------------------------
 
   Shows owners, reviewers, etc., using profile picture icons.
 
 */
 
 .phabricator-object-item-handle-icons {
   height: 28px;
   margin-right: 10px;
   bottom: 0;
   right: 0;
   text-align: right;
   position: absolute;
 }
 
 .phabricator-object-item-handle-icon {
   margin-left: 3px;
   width: 28px;
   height: 28px;
   display: inline-block;
   background-size: 28px 28px;
   background-repeat: no-repeat;
 }
 
 
 /* - Bylines -------------------------------------------------------------------
 
   Shows owners, authors, reviewers, etc., in text.
 
 */
 
 .phabricator-object-item-bylines {
   float: right;
   clear: right;
   padding: 0 10px;
   margin: 3px 0;
   font-size: 11px;
   color: #333333;
   white-space: nowrap;
   overflow: hidden;
   text-align: right;
 }
 
 /* - Card List -----------------------------------------------------------------
 
   Rounded card list.
 
 */
 
 /* Hard to sprite since we can't have other sprites appearing in tall cells */
 .phabricator-object-list-cards .phabricator-object-item {
   border-radius: 3px;
   border-left-width: 6px;
   background: #f0f0f0 url('/rsrc/image/texture/card-gradient.png') repeat-x;
   margin-bottom: 4px;
 }
 
 .phabricator-object-list-cards .phabricator-object-item-frame {
   min-height: 41px;
 }
 
 .phabricator-object-list-cards .phabricator-object-item-selected {
   background: #bfdcff;
 }
 
 .phabricator-object-list-cards .phabricator-object-item-selected
   .phabricator-object-item-frame {
   border-color: #99ccff;
 }
diff --git a/webroot/rsrc/css/layout/phabricator-workboard-view.css b/webroot/rsrc/css/layout/phabricator-workboard-view.css
index 2f01b61c55..47b8e4bf6a 100644
--- a/webroot/rsrc/css/layout/phabricator-workboard-view.css
+++ b/webroot/rsrc/css/layout/phabricator-workboard-view.css
@@ -1,61 +1,62 @@
 /**
  * @provides phabricator-workboard-view-css
  */
 
 .phabricator-workboard-view {
   width: 100%;
 }
 
 .phabricator-workboard-view-shadow {
   padding: 8px;
   min-height: 120px;
   overflow-x: scroll;
   border-radius: 5px;
   background: rgba(150,150,150,.1);
   box-shadow: inset 0 0 5px rgba(0,0,0,.5);
 }
 
 .phabricator-workboard-action-list {
   width: 60px;
   float: left;
   min-height: 60px;
   border-top-left-radius: 5px;
   border-bottom-left-radius: 5px;
   margin-top: 40px;
   background: rgba(150,150,150,.2);
 }
 
 .device-phone .phabricator-workboard-view-shadow {
   background: none;
   box-shadow: none;
   padding: 0;
   margin: 0 auto;
   width: 100%;
 }
 
 .device-phone .phabricator-workboard-action-list {
   width: 100%;
   float: none;
   display: block;
   border-radius: 3px;
   margin: 0 0 5px;
   overflow: hidden;
 }
 
 .device-phone .phabricator-workboard-action-list li {
   display: inline;
   float: left;
   margin: 0px;
 }
 
-.phabricator-workboard-view .phui-icon-item-link {
-  display: block;
+.phabricator-workboard-action-list .phui-icon-view {
+  display: inline-block;
+  vertical-align: top;
   width: 50px;
   height: 50px;
   margin: 5px 4px 5px 5px;
 }
 
-.device-phone .phabricator-workboard-view .phui-icon-item-link {
+.device-phone .phabricator-workboard-action-list .phui-icon-view {
   margin-right: 0;
 }
 
diff --git a/webroot/rsrc/css/phui/phui-feed-story.css b/webroot/rsrc/css/phui/phui-feed-story.css
index 483a8964ed..1b92caf53a 100644
--- a/webroot/rsrc/css/phui/phui-feed-story.css
+++ b/webroot/rsrc/css/phui/phui-feed-story.css
@@ -1,76 +1,77 @@
 /**
  * @provides phui-feed-story-css
  */
 
 .phui-feed-story {
   background: 5px 2px no-repeat;
   min-height: 50px;
   background-color: #fff;
 }
 
 .phui-feed-story-head .phui-feed-story-actor-image {
   width: 35px;
   height: 35px;
   background-size: 35px;
   float: left;
   margin-right: 10px;
 }
 
 .phui-feed-story-head {
  padding: 10px;
  overflow: hidden;
  color: #333;
 }
 
 .phui-feed-story-body {
   padding: 0 10px 10px;
   color: #444444;
 }
 
 .phui-feed-story-foot {
   color: #777;
   font-size: 11px;
   background: #f7f7f7;
   padding: 10px;
 }
 
-.phui-feed-story-foot .phui-icon-item-link {
+.phui-feed-story-foot .phui-icon-view {
   float: left;
   display: inline-block;
   margin-right: 5px;
 }
 
 .phui-feed-story-bigtext-post {
   font-size: 15px;
   font-weight: 200;
   line-height: 18px;
   color: #444;
 }
 
 .phui-feed-story-bigtext-post h3 {
   font-size: 24px;
   font-weight: 100;
   line-height: 18px;
   color: #444;
   margin: 10px 0;
 }
 
 .phui-feed-token-bar {
   margin-top: 10px;
   border-top: 1px solid #e7e7e7;
   padding-top: 10px;
 }
 
-.phui-feed-token-bar .phui-icon-item-link {
+.phui-feed-token-bar .phui-icon-view {
   margin-right: 2px;
+  display: inline-block;
 }
 
 .phui-feed-story-action-list {
   float: right;
   padding-top: 4px;
 }
 
 .phui-feed-story-action-item {
   float: right;
   padding-left: 2px;
 }
diff --git a/webroot/rsrc/css/phui/phui-icon.css b/webroot/rsrc/css/phui/phui-icon.css
index 2942f77e57..ba59ec31ca 100644
--- a/webroot/rsrc/css/phui/phui-icon.css
+++ b/webroot/rsrc/css/phui/phui-icon.css
@@ -1,46 +1,46 @@
 /**
  * @provides phui-icon-view-css
  */
 
-.phui-icon-item-link {
+.phui-icon-example .phui-icon-view {
   display: inline-block;
   vertical-align: top;
 }
 
-.phui-icon-item-link.sprite-minicons {
+.phui-icon-view.sprite-minicons {
   height: 16px;
   width: 16px;
 }
 
-.phui-icon-item-link.sprite-actions {
+.phui-icon-view.sprite-actions {
   height: 24px;
   width: 24px;
 }
 
-.phui-icon-item-link.sprite-apps {
+.phui-icon-view.sprite-apps {
   height: 14px;
   width: 14px;
 }
 
-.phui-icon-item-link.sprite-tokens {
+.phui-icon-view.sprite-tokens {
   height: 16px;
   width: 16px;
 }
 
-.phui-icon-item-link.sprite-payments {
+.phui-icon-view.sprite-payments {
   height: 32px;
   width: 60px;
 }
 
-.phui-icon-item-link.phuihead-medium {
+.phui-icon-view.phuihead-medium {
   height: 50px;
   width: 50px;
 }
 
-.phui-icon-item-link.phuihead-small {
+.phui-icon-view.phuihead-small {
   height: 35px;
   width: 35px;
   background-size: 35px;
 }
 
 
diff --git a/webroot/rsrc/css/sprite-actions.css b/webroot/rsrc/css/sprite-actions.css
index c912111178..63cdba2760 100644
--- a/webroot/rsrc/css/sprite-actions.css
+++ b/webroot/rsrc/css/sprite-actions.css
@@ -1,175 +1,175 @@
 /**
  * @provides sprite-actions-css
  * @generated
  */
 
 .sprite-actions {
   background-image: url(/rsrc/image/sprite-actions.png);
   background-repeat: no-repeat;
 }
 
 @media
 only screen and (min-device-pixel-ratio: 1.5),
 only screen and (-webkit-min-device-pixel-ratio: 1.5) {
   .sprite-actions {
     background-image: url(/rsrc/image/sprite-actions-X2.png);
     background-size: 150px 175px;
   }
 }
 
 
-.actions-close-dark, .device-desktop .actions-close-grey.phui-icon-item-link:hover {
+.actions-close-dark, .device-desktop .actions-close-grey.phui-icon-view:hover {
   background-position: 0px 0px;
 }
 
-.actions-down-dark, .device-desktop .actions-down-grey.phui-icon-item-link:hover {
+.actions-down-dark, .device-desktop .actions-down-grey.phui-icon-view:hover {
   background-position: -25px 0px;
 }
 
-.actions-flag-dark, .device-desktop .actions-flag-grey.phui-icon-item-link:hover {
+.actions-flag-dark, .device-desktop .actions-flag-grey.phui-icon-view:hover {
   background-position: -50px 0px;
 }
 
-.actions-heart-dark, .device-desktop .actions-heart-grey.phui-icon-item-link:hover {
+.actions-heart-dark, .device-desktop .actions-heart-grey.phui-icon-view:hover {
   background-position: -75px 0px;
 }
 
-.actions-move-dark, .device-desktop .actions-move-grey.phui-icon-item-link:hover {
+.actions-move-dark, .device-desktop .actions-move-grey.phui-icon-view:hover {
   background-position: -100px 0px;
 }
 
-.actions-new-dark, .device-desktop .actions-new-grey.phui-icon-item-link:hover {
+.actions-new-dark, .device-desktop .actions-new-grey.phui-icon-view:hover {
   background-position: -125px 0px;
 }
 
-.actions-search-dark, .device-desktop .actions-search-grey.phui-icon-item-link:hover {
+.actions-search-dark, .device-desktop .actions-search-grey.phui-icon-view:hover {
   background-position: 0px -25px;
 }
 
-.actions-settings-dark, .device-desktop .actions-settings-grey.phui-icon-item-link:hover {
+.actions-settings-dark, .device-desktop .actions-settings-grey.phui-icon-view:hover {
   background-position: -25px -25px;
 }
 
-.actions-star-dark, .device-desktop .actions-star-grey.phui-icon-item-link:hover {
+.actions-star-dark, .device-desktop .actions-star-grey.phui-icon-view:hover {
   background-position: -50px -25px;
 }
 
-.actions-tag-dark, .device-desktop .actions-tag-grey.phui-icon-item-link:hover {
+.actions-tag-dark, .device-desktop .actions-tag-grey.phui-icon-view:hover {
   background-position: -75px -25px;
 }
 
-.actions-token-dark, .device-desktop .actions-token-grey.phui-icon-item-link:hover {
+.actions-token-dark, .device-desktop .actions-token-grey.phui-icon-view:hover {
   background-position: -100px -25px;
 }
 
-.actions-up-dark, .device-desktop .actions-up-grey.phui-icon-item-link:hover {
+.actions-up-dark, .device-desktop .actions-up-grey.phui-icon-view:hover {
   background-position: -125px -25px;
 }
 
-.actions-wrench-dark, .device-desktop .actions-wrench-grey.phui-icon-item-link:hover {
+.actions-wrench-dark, .device-desktop .actions-wrench-grey.phui-icon-view:hover {
   background-position: 0px -50px;
 }
 
 .actions-close-grey {
   background-position: -25px -50px;
 }
 
 .actions-down-grey {
   background-position: -50px -50px;
 }
 
 .actions-flag-grey {
   background-position: -75px -50px;
 }
 
 .actions-heart-grey {
   background-position: -100px -50px;
 }
 
 .actions-move-grey {
   background-position: -125px -50px;
 }
 
 .actions-new-grey {
   background-position: 0px -75px;
 }
 
 .actions-search-grey {
   background-position: -25px -75px;
 }
 
 .actions-settings-grey {
   background-position: -50px -75px;
 }
 
 .actions-star-grey {
   background-position: -75px -75px;
 }
 
 .actions-tag-grey {
   background-position: -100px -75px;
 }
 
 .actions-token-grey {
   background-position: -125px -75px;
 }
 
 .actions-up-grey {
   background-position: 0px -100px;
 }
 
 .actions-wrench-grey {
   background-position: -25px -100px;
 }
 
 .actions-close-white {
   background-position: -50px -100px;
 }
 
 .actions-down-white {
   background-position: -75px -100px;
 }
 
 .actions-flag-white {
   background-position: -100px -100px;
 }
 
 .actions-heart-white {
   background-position: -125px -100px;
 }
 
 .actions-move-white {
   background-position: 0px -125px;
 }
 
 .actions-new-white {
   background-position: -25px -125px;
 }
 
 .actions-search-white {
   background-position: -50px -125px;
 }
 
 .actions-settings-white {
   background-position: -75px -125px;
 }
 
 .actions-star-white {
   background-position: -100px -125px;
 }
 
 .actions-tag-white {
   background-position: -125px -125px;
 }
 
 .actions-token-white {
   background-position: 0px -150px;
 }
 
 .actions-up-white {
   background-position: -25px -150px;
 }
 
 .actions-wrench-white {
   background-position: -50px -150px;
 }
diff --git a/webroot/rsrc/css/sprite-icon.css b/webroot/rsrc/css/sprite-icons.css
similarity index 51%
rename from webroot/rsrc/css/sprite-icon.css
rename to webroot/rsrc/css/sprite-icons.css
index 5d0e7ee4cc..79e91b9dd8 100644
--- a/webroot/rsrc/css/sprite-icon.css
+++ b/webroot/rsrc/css/sprite-icons.css
@@ -1,851 +1,851 @@
 /**
- * @provides sprite-icon-css
+ * @provides sprite-icons-css
  * @generated
  */
 
-.sprite-icon {
-  background-image: url(/rsrc/image/sprite-icon.png);
+.sprite-icons {
+  background-image: url(/rsrc/image/sprite-icons.png);
   background-repeat: no-repeat;
 }
 
 @media
 only screen and (min-device-pixel-ratio: 1.5),
 only screen and (-webkit-min-device-pixel-ratio: 1.5) {
-  .sprite-icon {
-    background-image: url(/rsrc/image/sprite-icon-X2.png);
+  .sprite-icons {
+    background-image: url(/rsrc/image/sprite-icons-X2.png);
     background-size: 210px 225px;
   }
 }
 
 
-.action-action-menu {
+.icons-action-menu {
   background-position: 0px 0px;
 }
 
-.action-arrow_left {
+.icons-arrow_left {
   background-position: -15px 0px;
 }
 
-.action-arrow_right {
+.icons-arrow_right {
   background-position: -30px 0px;
 }
 
-.action-attach {
+.icons-attach {
   background-position: -45px 0px;
 }
 
-.action-blame {
+.icons-blame {
   background-position: -60px 0px;
 }
 
-.action-check {
+.icons-check {
   background-position: -75px 0px;
 }
 
-.action-comment {
+.icons-comment {
   background-position: -90px 0px;
 }
 
-.action-computer {
+.icons-computer {
   background-position: -105px 0px;
 }
 
-.action-create {
+.icons-create {
   background-position: -120px 0px;
 }
 
-.action-delete {
+.icons-delete {
   background-position: -135px 0px;
 }
 
-.action-disable {
+.icons-disable {
   background-position: -150px 0px;
 }
 
-.action-dislike {
+.icons-dislike {
   background-position: -165px 0px;
 }
 
-.action-download-alt {
+.icons-download-alt {
   background-position: -180px 0px;
 }
 
-.action-download {
+.icons-download {
   background-position: -195px 0px;
 }
 
-.action-edit {
+.icons-edit {
   background-position: 0px -15px;
 }
 
-.action-enable {
+.icons-enable {
   background-position: -15px -15px;
 }
 
-.action-file {
+.icons-file {
   background-position: -30px -15px;
 }
 
-.action-flag-0 {
+.icons-flag-0 {
   background-position: -45px -15px;
 }
 
-.action-flag-1 {
+.icons-flag-1 {
   background-position: -60px -15px;
 }
 
-.action-flag-2 {
+.icons-flag-2 {
   background-position: -75px -15px;
 }
 
-.action-flag-3 {
+.icons-flag-3 {
   background-position: -90px -15px;
 }
 
-.action-flag-4 {
+.icons-flag-4 {
   background-position: -105px -15px;
 }
 
-.action-flag-5 {
+.icons-flag-5 {
   background-position: -120px -15px;
 }
 
-.action-flag-6 {
+.icons-flag-6 {
   background-position: -135px -15px;
 }
 
-.action-flag-7 {
+.icons-flag-7 {
   background-position: -150px -15px;
 }
 
-.action-flag-ghost {
+.icons-flag-ghost {
   background-position: -165px -15px;
 }
 
-.action-flag {
+.icons-flag {
   background-position: -180px -15px;
 }
 
-.action-folder-open {
+.icons-folder-open {
   background-position: -195px -15px;
 }
 
-.action-fork {
+.icons-fork {
   background-position: 0px -30px;
 }
 
-.action-herald {
+.icons-herald {
   background-position: -15px -30px;
 }
 
-.action-highlight {
+.icons-highlight {
   background-position: -30px -30px;
 }
 
-.action-history {
+.icons-history {
   background-position: -45px -30px;
 }
 
-.action-image {
+.icons-image {
   background-position: -60px -30px;
 }
 
-.action-like {
+.icons-like {
   background-position: -75px -30px;
 }
 
-.action-link {
+.icons-link {
   background-position: -90px -30px;
 }
 
-.action-lint-info {
+.icons-lint-info {
   background-position: -105px -30px;
 }
 
-.action-lint-ok {
+.icons-lint-ok {
   background-position: -120px -30px;
 }
 
-.action-lint-warning {
+.icons-lint-warning {
   background-position: -135px -30px;
 }
 
-.action-lock {
+.icons-lock {
   background-position: -150px -30px;
 }
 
-.action-love {
+.icons-love {
   background-position: -165px -30px;
 }
 
-.action-merge {
+.icons-merge {
   background-position: -180px -30px;
 }
 
-.action-message {
+.icons-message {
   background-position: -195px -30px;
 }
 
-.action-meta-mta {
+.icons-meta-mta {
   background-position: 0px -45px;
 }
 
-.action-move {
+.icons-move {
   background-position: -15px -45px;
 }
 
-.action-new {
+.icons-new {
   background-position: -30px -45px;
 }
 
-.action-none {
+.icons-none {
   background-position: -45px -45px;
 }
 
-.action-perflab {
+.icons-perflab {
   background-position: -60px -45px;
 }
 
-.action-preview {
+.icons-preview {
   background-position: -75px -45px;
 }
 
-.action-refresh {
+.icons-refresh {
   background-position: -90px -45px;
 }
 
-.action-remove {
+.icons-remove {
   background-position: -105px -45px;
 }
 
-.action-search {
+.icons-search {
   background-position: -120px -45px;
 }
 
-.action-start-sandcastle {
+.icons-start-sandcastle {
   background-position: -135px -45px;
 }
 
-.action-subscribe-add {
+.icons-subscribe-add {
   background-position: -150px -45px;
 }
 
-.action-subscribe-auto {
+.icons-subscribe-auto {
   background-position: -165px -45px;
 }
 
-.action-subscribe-delete {
+.icons-subscribe-delete {
   background-position: -180px -45px;
 }
 
-.action-tag {
+.icons-tag {
   background-position: -195px -45px;
 }
 
-.action-transcript {
+.icons-transcript {
   background-position: 0px -60px;
 }
 
-.action-undo {
+.icons-undo {
   background-position: -15px -60px;
 }
 
-.action-unlock {
+.icons-unlock {
   background-position: -30px -60px;
 }
 
-.action-unmerge {
+.icons-unmerge {
   background-position: -45px -60px;
 }
 
-.action-unpublish {
+.icons-unpublish {
   background-position: -60px -60px;
 }
 
-.action-upload {
+.icons-upload {
   background-position: -75px -60px;
 }
 
-.action-warning {
+.icons-warning {
   background-position: -90px -60px;
 }
 
-.action-world {
+.icons-world {
   background-position: -105px -60px;
 }
 
-.action-action-menu-grey {
+.icons-action-menu-grey {
   background-position: -120px -60px;
 }
 
-.action-arrow_left-grey {
+.icons-arrow_left-grey {
   background-position: -135px -60px;
 }
 
-.action-arrow_right-grey {
+.icons-arrow_right-grey {
   background-position: -150px -60px;
 }
 
-.action-attach-grey {
+.icons-attach-grey {
   background-position: -165px -60px;
 }
 
-.action-blame-grey {
+.icons-blame-grey {
   background-position: -180px -60px;
 }
 
-.action-check-grey {
+.icons-check-grey {
   background-position: -195px -60px;
 }
 
-.action-comment-grey {
+.icons-comment-grey {
   background-position: 0px -75px;
 }
 
-.action-computer-grey {
+.icons-computer-grey {
   background-position: -15px -75px;
 }
 
-.action-create-grey {
+.icons-create-grey {
   background-position: -30px -75px;
 }
 
-.action-delete-grey {
+.icons-delete-grey {
   background-position: -45px -75px;
 }
 
-.action-disable-grey {
+.icons-disable-grey {
   background-position: -60px -75px;
 }
 
-.action-dislike-grey {
+.icons-dislike-grey {
   background-position: -75px -75px;
 }
 
-.action-download-alt-grey {
+.icons-download-alt-grey {
   background-position: -90px -75px;
 }
 
-.action-download-grey {
+.icons-download-grey {
   background-position: -105px -75px;
 }
 
-.action-edit-grey {
+.icons-edit-grey {
   background-position: -120px -75px;
 }
 
-.action-enable-grey {
+.icons-enable-grey {
   background-position: -135px -75px;
 }
 
-.action-file-grey {
+.icons-file-grey {
   background-position: -150px -75px;
 }
 
-.action-flag-0-grey {
+.icons-flag-0-grey {
   background-position: -165px -75px;
 }
 
-.action-flag-1-grey {
+.icons-flag-1-grey {
   background-position: -180px -75px;
 }
 
-.action-flag-2-grey {
+.icons-flag-2-grey {
   background-position: -195px -75px;
 }
 
-.action-flag-3-grey {
+.icons-flag-3-grey {
   background-position: 0px -90px;
 }
 
-.action-flag-4-grey {
+.icons-flag-4-grey {
   background-position: -15px -90px;
 }
 
-.action-flag-5-grey {
+.icons-flag-5-grey {
   background-position: -30px -90px;
 }
 
-.action-flag-6-grey {
+.icons-flag-6-grey {
   background-position: -45px -90px;
 }
 
-.action-flag-7-grey {
+.icons-flag-7-grey {
   background-position: -60px -90px;
 }
 
-.action-flag-ghost-grey {
+.icons-flag-ghost-grey {
   background-position: -75px -90px;
 }
 
-.action-flag-grey {
+.icons-flag-grey {
   background-position: -90px -90px;
 }
 
-.action-folder-open-grey {
+.icons-folder-open-grey {
   background-position: -105px -90px;
 }
 
-.action-fork-grey {
+.icons-fork-grey {
   background-position: -120px -90px;
 }
 
-.action-herald-grey {
+.icons-herald-grey {
   background-position: -135px -90px;
 }
 
-.action-highlight-grey {
+.icons-highlight-grey {
   background-position: -150px -90px;
 }
 
-.action-history-grey {
+.icons-history-grey {
   background-position: -165px -90px;
 }
 
-.action-image-grey {
+.icons-image-grey {
   background-position: -180px -90px;
 }
 
-.action-like-grey {
+.icons-like-grey {
   background-position: -195px -90px;
 }
 
-.action-link-grey {
+.icons-link-grey {
   background-position: 0px -105px;
 }
 
-.action-lint-info-grey {
+.icons-lint-info-grey {
   background-position: -15px -105px;
 }
 
-.action-lint-ok-grey {
+.icons-lint-ok-grey {
   background-position: -30px -105px;
 }
 
-.action-lint-warning-grey {
+.icons-lint-warning-grey {
   background-position: -45px -105px;
 }
 
-.action-lock-grey {
+.icons-lock-grey {
   background-position: -60px -105px;
 }
 
-.action-love-grey {
+.icons-love-grey {
   background-position: -75px -105px;
 }
 
-.action-merge-grey {
+.icons-merge-grey {
   background-position: -90px -105px;
 }
 
-.action-message-grey {
+.icons-message-grey {
   background-position: -105px -105px;
 }
 
-.action-meta-mta-grey {
+.icons-meta-mta-grey {
   background-position: -120px -105px;
 }
 
-.action-move-grey {
+.icons-move-grey {
   background-position: -135px -105px;
 }
 
-.action-new-grey {
+.icons-new-grey {
   background-position: -150px -105px;
 }
 
-.action-none-grey {
+.icons-none-grey {
   background-position: -165px -105px;
 }
 
-.action-perflab-grey {
+.icons-perflab-grey {
   background-position: -180px -105px;
 }
 
-.action-preview-grey {
+.icons-preview-grey {
   background-position: -195px -105px;
 }
 
-.action-refresh-grey {
+.icons-refresh-grey {
   background-position: 0px -120px;
 }
 
-.action-remove-grey {
+.icons-remove-grey {
   background-position: -15px -120px;
 }
 
-.action-search-grey {
+.icons-search-grey {
   background-position: -30px -120px;
 }
 
-.action-start-sandcastle-grey {
+.icons-start-sandcastle-grey {
   background-position: -45px -120px;
 }
 
-.action-subscribe-add-grey {
+.icons-subscribe-add-grey {
   background-position: -60px -120px;
 }
 
-.action-subscribe-auto-grey {
+.icons-subscribe-auto-grey {
   background-position: -75px -120px;
 }
 
-.action-subscribe-delete-grey {
+.icons-subscribe-delete-grey {
   background-position: -90px -120px;
 }
 
-.action-tag-grey {
+.icons-tag-grey {
   background-position: -105px -120px;
 }
 
-.action-transcript-grey {
+.icons-transcript-grey {
   background-position: -120px -120px;
 }
 
-.action-undo-grey {
+.icons-undo-grey {
   background-position: -135px -120px;
 }
 
-.action-unlock-grey {
+.icons-unlock-grey {
   background-position: -150px -120px;
 }
 
-.action-unmerge-grey {
+.icons-unmerge-grey {
   background-position: -165px -120px;
 }
 
-.action-unpublish-grey {
+.icons-unpublish-grey {
   background-position: -180px -120px;
 }
 
-.action-upload-grey {
+.icons-upload-grey {
   background-position: -195px -120px;
 }
 
-.action-warning-grey {
+.icons-warning-grey {
   background-position: 0px -135px;
 }
 
-.action-world-grey {
+.icons-world-grey {
   background-position: -15px -135px;
 }
 
-.action-action-menu-white, .device-desktop .phabricator-action-view:hover .action-action-menu {
+.icons-action-menu-white, .device-desktop .phabricator-action-view:hover .icons-action-menu {
   background-position: -30px -135px;
 }
 
-.action-arrow_left-white, .device-desktop .phabricator-action-view:hover .action-arrow_left {
+.icons-arrow_left-white, .device-desktop .phabricator-action-view:hover .icons-arrow_left {
   background-position: -45px -135px;
 }
 
-.action-arrow_right-white, .device-desktop .phabricator-action-view:hover .action-arrow_right {
+.icons-arrow_right-white, .device-desktop .phabricator-action-view:hover .icons-arrow_right {
   background-position: -60px -135px;
 }
 
-.action-attach-white, .device-desktop .phabricator-action-view:hover .action-attach {
+.icons-attach-white, .device-desktop .phabricator-action-view:hover .icons-attach {
   background-position: -75px -135px;
 }
 
-.action-blame-white, .device-desktop .phabricator-action-view:hover .action-blame {
+.icons-blame-white, .device-desktop .phabricator-action-view:hover .icons-blame {
   background-position: -90px -135px;
 }
 
-.action-check-white, .device-desktop .phabricator-action-view:hover .action-check {
+.icons-check-white, .device-desktop .phabricator-action-view:hover .icons-check {
   background-position: -105px -135px;
 }
 
-.action-comment-white, .device-desktop .phabricator-action-view:hover .action-comment {
+.icons-comment-white, .device-desktop .phabricator-action-view:hover .icons-comment {
   background-position: -120px -135px;
 }
 
-.action-computer-white, .device-desktop .phabricator-action-view:hover .action-computer {
+.icons-computer-white, .device-desktop .phabricator-action-view:hover .icons-computer {
   background-position: -135px -135px;
 }
 
-.action-create-white, .device-desktop .phabricator-action-view:hover .action-create {
+.icons-create-white, .device-desktop .phabricator-action-view:hover .icons-create {
   background-position: -150px -135px;
 }
 
-.action-delete-white, .device-desktop .phabricator-action-view:hover .action-delete {
+.icons-delete-white, .device-desktop .phabricator-action-view:hover .icons-delete {
   background-position: -165px -135px;
 }
 
-.action-disable-white, .device-desktop .phabricator-action-view:hover .action-disable {
+.icons-disable-white, .device-desktop .phabricator-action-view:hover .icons-disable {
   background-position: -180px -135px;
 }
 
-.action-dislike-white, .device-desktop .phabricator-action-view:hover .action-dislike {
+.icons-dislike-white, .device-desktop .phabricator-action-view:hover .icons-dislike {
   background-position: -195px -135px;
 }
 
-.action-download-alt-white, .device-desktop .phabricator-action-view:hover .action-download-alt {
+.icons-download-alt-white, .device-desktop .phabricator-action-view:hover .icons-download-alt {
   background-position: 0px -150px;
 }
 
-.action-download-white, .device-desktop .phabricator-action-view:hover .action-download {
+.icons-download-white, .device-desktop .phabricator-action-view:hover .icons-download {
   background-position: -15px -150px;
 }
 
-.action-edit-white, .device-desktop .phabricator-action-view:hover .action-edit {
+.icons-edit-white, .device-desktop .phabricator-action-view:hover .icons-edit {
   background-position: -30px -150px;
 }
 
-.action-enable-white, .device-desktop .phabricator-action-view:hover .action-enable {
+.icons-enable-white, .device-desktop .phabricator-action-view:hover .icons-enable {
   background-position: -45px -150px;
 }
 
-.action-file-white, .device-desktop .phabricator-action-view:hover .action-file {
+.icons-file-white, .device-desktop .phabricator-action-view:hover .icons-file {
   background-position: -60px -150px;
 }
 
-.action-flag-0-white, .device-desktop .phabricator-action-view:hover .action-flag-0 {
+.icons-flag-0-white, .device-desktop .phabricator-action-view:hover .icons-flag-0 {
   background-position: -75px -150px;
 }
 
-.action-flag-1-white, .device-desktop .phabricator-action-view:hover .action-flag-1 {
+.icons-flag-1-white, .device-desktop .phabricator-action-view:hover .icons-flag-1 {
   background-position: -90px -150px;
 }
 
-.action-flag-2-white, .device-desktop .phabricator-action-view:hover .action-flag-2 {
+.icons-flag-2-white, .device-desktop .phabricator-action-view:hover .icons-flag-2 {
   background-position: -105px -150px;
 }
 
-.action-flag-3-white, .device-desktop .phabricator-action-view:hover .action-flag-3 {
+.icons-flag-3-white, .device-desktop .phabricator-action-view:hover .icons-flag-3 {
   background-position: -120px -150px;
 }
 
-.action-flag-4-white, .device-desktop .phabricator-action-view:hover .action-flag-4 {
+.icons-flag-4-white, .device-desktop .phabricator-action-view:hover .icons-flag-4 {
   background-position: -135px -150px;
 }
 
-.action-flag-5-white, .device-desktop .phabricator-action-view:hover .action-flag-5 {
+.icons-flag-5-white, .device-desktop .phabricator-action-view:hover .icons-flag-5 {
   background-position: -150px -150px;
 }
 
-.action-flag-6-white, .device-desktop .phabricator-action-view:hover .action-flag-6 {
+.icons-flag-6-white, .device-desktop .phabricator-action-view:hover .icons-flag-6 {
   background-position: -165px -150px;
 }
 
-.action-flag-7-white, .device-desktop .phabricator-action-view:hover .action-flag-7 {
+.icons-flag-7-white, .device-desktop .phabricator-action-view:hover .icons-flag-7 {
   background-position: -180px -150px;
 }
 
-.action-flag-ghost-white, .device-desktop .phabricator-action-view:hover .action-flag-ghost {
+.icons-flag-ghost-white, .device-desktop .phabricator-action-view:hover .icons-flag-ghost {
   background-position: -195px -150px;
 }
 
-.action-flag-white, .device-desktop .phabricator-action-view:hover .action-flag {
+.icons-flag-white, .device-desktop .phabricator-action-view:hover .icons-flag {
   background-position: 0px -165px;
 }
 
-.action-folder-open-white, .device-desktop .phabricator-action-view:hover .action-folder-open {
+.icons-folder-open-white, .device-desktop .phabricator-action-view:hover .icons-folder-open {
   background-position: -15px -165px;
 }
 
-.action-fork-white, .device-desktop .phabricator-action-view:hover .action-fork {
+.icons-fork-white, .device-desktop .phabricator-action-view:hover .icons-fork {
   background-position: -30px -165px;
 }
 
-.action-herald-white, .device-desktop .phabricator-action-view:hover .action-herald {
+.icons-herald-white, .device-desktop .phabricator-action-view:hover .icons-herald {
   background-position: -45px -165px;
 }
 
-.action-highlight-white, .device-desktop .phabricator-action-view:hover .action-highlight {
+.icons-highlight-white, .device-desktop .phabricator-action-view:hover .icons-highlight {
   background-position: -60px -165px;
 }
 
-.action-history-white, .device-desktop .phabricator-action-view:hover .action-history {
+.icons-history-white, .device-desktop .phabricator-action-view:hover .icons-history {
   background-position: -75px -165px;
 }
 
-.action-image-white, .device-desktop .phabricator-action-view:hover .action-image {
+.icons-image-white, .device-desktop .phabricator-action-view:hover .icons-image {
   background-position: -90px -165px;
 }
 
-.action-like-white, .device-desktop .phabricator-action-view:hover .action-like {
+.icons-like-white, .device-desktop .phabricator-action-view:hover .icons-like {
   background-position: -105px -165px;
 }
 
-.action-link-white, .device-desktop .phabricator-action-view:hover .action-link {
+.icons-link-white, .device-desktop .phabricator-action-view:hover .icons-link {
   background-position: -120px -165px;
 }
 
-.action-lint-info-white, .device-desktop .phabricator-action-view:hover .action-lint-info {
+.icons-lint-info-white, .device-desktop .phabricator-action-view:hover .icons-lint-info {
   background-position: -135px -165px;
 }
 
-.action-lint-ok-white, .device-desktop .phabricator-action-view:hover .action-lint-ok {
+.icons-lint-ok-white, .device-desktop .phabricator-action-view:hover .icons-lint-ok {
   background-position: -150px -165px;
 }
 
-.action-lint-warning-white, .device-desktop .phabricator-action-view:hover .action-lint-warning {
+.icons-lint-warning-white, .device-desktop .phabricator-action-view:hover .icons-lint-warning {
   background-position: -165px -165px;
 }
 
-.action-lock-white, .device-desktop .phabricator-action-view:hover .action-lock {
+.icons-lock-white, .device-desktop .phabricator-action-view:hover .icons-lock {
   background-position: -180px -165px;
 }
 
-.action-love-white, .device-desktop .phabricator-action-view:hover .action-love {
+.icons-love-white, .device-desktop .phabricator-action-view:hover .icons-love {
   background-position: -195px -165px;
 }
 
-.action-merge-white, .device-desktop .phabricator-action-view:hover .action-merge {
+.icons-merge-white, .device-desktop .phabricator-action-view:hover .icons-merge {
   background-position: 0px -180px;
 }
 
-.action-message-white, .device-desktop .phabricator-action-view:hover .action-message {
+.icons-message-white, .device-desktop .phabricator-action-view:hover .icons-message {
   background-position: -15px -180px;
 }
 
-.action-meta-mta-white, .device-desktop .phabricator-action-view:hover .action-meta-mta {
+.icons-meta-mta-white, .device-desktop .phabricator-action-view:hover .icons-meta-mta {
   background-position: -30px -180px;
 }
 
-.action-move-white, .device-desktop .phabricator-action-view:hover .action-move {
+.icons-move-white, .device-desktop .phabricator-action-view:hover .icons-move {
   background-position: -45px -180px;
 }
 
-.action-new-white, .device-desktop .phabricator-action-view:hover .action-new, .phabricator-application-launch-create:hover .phabricator-application-create-icon.action-new-grey {
+.icons-new-white, .device-desktop .phabricator-action-view:hover .icons-new, .phabricator-application-launch-create:hover .phabricator-application-create-icon.icons-new-grey {
   background-position: -60px -180px;
 }
 
-.action-none-white, .device-desktop .phabricator-action-view:hover .action-none {
+.icons-none-white, .device-desktop .phabricator-action-view:hover .icons-none {
   background-position: -75px -180px;
 }
 
-.action-perflab-white, .device-desktop .phabricator-action-view:hover .action-perflab {
+.icons-perflab-white, .device-desktop .phabricator-action-view:hover .icons-perflab {
   background-position: -90px -180px;
 }
 
-.action-preview-white, .device-desktop .phabricator-action-view:hover .action-preview {
+.icons-preview-white, .device-desktop .phabricator-action-view:hover .icons-preview {
   background-position: -105px -180px;
 }
 
-.action-refresh-white, .device-desktop .phabricator-action-view:hover .action-refresh {
+.icons-refresh-white, .device-desktop .phabricator-action-view:hover .icons-refresh {
   background-position: -120px -180px;
 }
 
-.action-remove-white, .device-desktop .phabricator-action-view:hover .action-remove {
+.icons-remove-white, .device-desktop .phabricator-action-view:hover .icons-remove {
   background-position: -135px -180px;
 }
 
-.action-search-white, .device-desktop .phabricator-action-view:hover .action-search {
+.icons-search-white, .device-desktop .phabricator-action-view:hover .icons-search {
   background-position: -150px -180px;
 }
 
-.action-start-sandcastle-white, .device-desktop .phabricator-action-view:hover .action-start-sandcastle {
+.icons-start-sandcastle-white, .device-desktop .phabricator-action-view:hover .icons-start-sandcastle {
   background-position: -165px -180px;
 }
 
-.action-subscribe-add-white, .device-desktop .phabricator-action-view:hover .action-subscribe-add {
+.icons-subscribe-add-white, .device-desktop .phabricator-action-view:hover .icons-subscribe-add {
   background-position: -180px -180px;
 }
 
-.action-subscribe-auto-white, .device-desktop .phabricator-action-view:hover .action-subscribe-auto {
+.icons-subscribe-auto-white, .device-desktop .phabricator-action-view:hover .icons-subscribe-auto {
   background-position: -195px -180px;
 }
 
-.action-subscribe-delete-white, .device-desktop .phabricator-action-view:hover .action-subscribe-delete {
+.icons-subscribe-delete-white, .device-desktop .phabricator-action-view:hover .icons-subscribe-delete {
   background-position: 0px -195px;
 }
 
-.action-tag-white, .device-desktop .phabricator-action-view:hover .action-tag {
+.icons-tag-white, .device-desktop .phabricator-action-view:hover .icons-tag {
   background-position: -15px -195px;
 }
 
-.action-transcript-white, .device-desktop .phabricator-action-view:hover .action-transcript {
+.icons-transcript-white, .device-desktop .phabricator-action-view:hover .icons-transcript {
   background-position: -30px -195px;
 }
 
-.action-undo-white, .device-desktop .phabricator-action-view:hover .action-undo {
+.icons-undo-white, .device-desktop .phabricator-action-view:hover .icons-undo {
   background-position: -45px -195px;
 }
 
-.action-unlock-white, .device-desktop .phabricator-action-view:hover .action-unlock {
+.icons-unlock-white, .device-desktop .phabricator-action-view:hover .icons-unlock {
   background-position: -60px -195px;
 }
 
-.action-unmerge-white, .device-desktop .phabricator-action-view:hover .action-unmerge {
+.icons-unmerge-white, .device-desktop .phabricator-action-view:hover .icons-unmerge {
   background-position: -75px -195px;
 }
 
-.action-unpublish-white, .device-desktop .phabricator-action-view:hover .action-unpublish {
+.icons-unpublish-white, .device-desktop .phabricator-action-view:hover .icons-unpublish {
   background-position: -90px -195px;
 }
 
-.action-upload-white, .device-desktop .phabricator-action-view:hover .action-upload {
+.icons-upload-white, .device-desktop .phabricator-action-view:hover .icons-upload {
   background-position: -105px -195px;
 }
 
-.action-warning-white, .device-desktop .phabricator-action-view:hover .action-warning {
+.icons-warning-white, .device-desktop .phabricator-action-view:hover .icons-warning {
   background-position: -120px -195px;
 }
 
-.action-world-white, .device-desktop .phabricator-action-view:hover .action-world {
+.icons-world-white, .device-desktop .phabricator-action-view:hover .icons-world {
   background-position: -135px -195px;
 }
 
 .remarkup-assist-b {
   background-position: -150px -195px;
 }
 
 .remarkup-assist-chaos {
   background-position: -165px -195px;
 }
 
 .remarkup-control-chaos-mode .remarkup-assist-chaos {
   background-position: -180px -195px;
 }
 
 .remarkup-assist-code {
   background-position: -195px -195px;
 }
 
 .remarkup-assist-help {
   background-position: 0px -210px;
 }
 
 .remarkup-assist-i {
   background-position: -15px -210px;
 }
 
 .remarkup-assist-image {
   background-position: -30px -210px;
 }
 
 .remarkup-assist-larger {
   background-position: -45px -210px;
 }
 
 .remarkup-assist-meme {
   background-position: -60px -210px;
 }
 
 .remarkup-assist-ol {
   background-position: -75px -210px;
 }
 
 .remarkup-assist-order {
   background-position: -90px -210px;
 }
 
 .remarkup-control-order-mode .remarkup-assist-order {
   background-position: -105px -210px;
 }
 
 .remarkup-assist-table {
   background-position: -120px -210px;
 }
 
 .remarkup-assist-tag {
   background-position: -135px -210px;
 }
 
 .remarkup-assist-tt {
   background-position: -150px -210px;
 }
 
 .remarkup-assist-ul {
   background-position: -165px -210px;
 }
diff --git a/webroot/rsrc/image/sprite-icon-X2.png b/webroot/rsrc/image/sprite-icons-X2.png
similarity index 100%
rename from webroot/rsrc/image/sprite-icon-X2.png
rename to webroot/rsrc/image/sprite-icons-X2.png
diff --git a/webroot/rsrc/image/sprite-icon.png b/webroot/rsrc/image/sprite-icons.png
similarity index 100%
rename from webroot/rsrc/image/sprite-icon.png
rename to webroot/rsrc/image/sprite-icons.png