Raymond Hill 6 years ago
parent
commit
b822ae72d9
No known key found for this signature in database GPG Key ID: 25E1490B761470C2
  1. 8
      src/cloud-ui.html
  2. 25
      src/css/cloud-ui.css
  3. 14
      src/css/common.css
  4. 24
      src/css/dashboard-common.css
  5. 62
      src/css/fa-icons.css
  6. BIN
      src/css/fonts/fontawesome-webfont.ttf
  7. 114
      src/css/hosts-files.css
  8. 19
      src/css/logger-ui.css
  9. 9
      src/css/popup.css
  10. 41
      src/css/user-rules.css
  11. 30
      src/hosts-files.html
  12. 47
      src/img/fontawesome/fontawesome-defs.svg
  13. 28
      src/js/cloud-ui.js
  14. 8
      src/js/fa-icons.js
  15. 6
      src/js/hosts-files.js
  16. 8
      src/popup.html
  17. 10
      src/raw-settings.html
  18. 18
      src/settings.html
  19. 34
      src/user-rules.html

8
src/cloud-ui.html

@ -5,12 +5,12 @@
<title></title>
</head>
<body>
<button id="cloudPush" type="button" title="cloudPush"></button>
<button id="cloudPush" type="button" title="cloudPush"><span class="fa-icon">cloud-upload-alt</span></button>
<span data-i18n="cloudNoData"></span>
<button id="cloudPull" type="button" title="cloudPull" disabled></button>
<button id="cloudPullAndMerge" type="button" title="cloudPullAndMerge" disabled></button>
<button id="cloudPull" type="button" title="cloudPull" disabled><span class="fa-icon">cloud-download-alt</span></button>
<button id="cloudPullAndMerge" type="button" title="cloudPullAndMerge" disabled><span class="fa-icon">cloud-download-alt</span><span class="fa-icon">plus</span></button>
<p id="cloudError"><span></span></p>
<span id="cloudCog" class="fa">&#xf013;</span>
<span id="cloudCog" class="fa-icon">cog</span>
<div id="cloudOptions">
<div>
<p><label data-i18n="cloudDeviceNamePrompt"></label> <input id="cloudDeviceName" type="text" value="">

25
src/css/cloud-ui.css

@ -9,15 +9,9 @@
display: none;
}
#cloudWidget > button {
display: inline-block;
font-family: FontAwesome;
font-size: 160%;
font-style: normal;
font-weight: normal;
line-height: 1;
padding: 0.2em 0.25em 0.1em 0.25em;
font-size: 180%;
padding: 0 0.25em;
position: relative;
vertical-align: baseline;
}
#cloudWidget > button[disabled] {
visibility: hidden;
@ -25,22 +19,14 @@
#cloudWidget > button.error {
color: red;
}
#cloudPush:after {
content: '\f0ee';
}
#cloudPull:before,
#cloudPullAndMerge:before {
content: '\f0ed';
}
#cloudPullAndMerge {
margin: 0 0.25em;
}
#cloudPullAndMerge:after {
content: '\f067';
#cloudPullAndMerge > span:nth-of-type(2) {
font-size: 50%;
position: absolute;
right: 0;
top: 10%;
top: 0;
}
#cloudWidget > span {
color: gray;
@ -61,11 +47,10 @@
}
#cloudWidget > #cloudCog {
cursor: pointer;
display: inline-block;
font-size: 110%;
margin: 0;
opacity: 0.5;
padding: 4px;
padding: 0.2em;
position: absolute;
top: 0;
}

14
src/css/common.css

@ -16,20 +16,6 @@
font-weight: 100;
src: local('httpsb'), url(fonts/Roboto_Condensed/RobotoCondensed-Light.ttf) format('truetype');
}
@font-face {
font-family: 'FontAwesome';
src: url('fonts/fontawesome-webfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
.fa {
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
vertical-align: baseline;
display: inline-block;
}
body {
font-size: 14px;

24
src/css/dashboard-common.css

@ -22,6 +22,8 @@ a {
text-decoration: none;
}
button {
align-items: center;
display: inline-flex;
padding: 0.3em 0.5em;
}
input[disabled] + label {
@ -31,16 +33,24 @@ input[disabled] + label {
width: 40em;
}
.fa-icon.info {
opacity: 0.25;
vertical-align: middle;
}
.fa-icon.info:hover {
opacity: 1;
}
.fa-icon.info.important {
color: red;
fill: red;
}
.whatisthis {
margin: 0 0 0 8px;
border: 0;
font-family: FontAwesome;
padding: 0 0 4px 0;
cursor: pointer;
opacity: 0.4;
}
.whatisthis:before {
content: '\f059';
margin: 0 0 0 0.2em;
opacity: 0.25;
vertical-align: middle;
}
.whatisthis:hover {
opacity: 1.0;

62
src/css/fa-icons.css

@ -8,15 +8,15 @@
padding: 0.1em;
position: relative;
}
.fa-icon:hover {
background-color: #eee;
}
.fa-icon > * {
pointer-events: none;
}
.fa-icon.disabled {
color: #888;
fill: #888;
.fa-icon.disabled,
.disabled > .fa-icon,
.fa-icon[disabled],
[disabled] > .fa-icon {
color: #000;
fill: #000;
opacity: 0.25;
stroke: #888;
pointer-events: none;
@ -41,32 +41,50 @@
.fa-icon > svg {
height: 1em;
width: 1em;
}
.fa-icon > .fa-icon_cloud-download-alt,
.fa-icon > .fa-icon_cloud-upload-alt {
width: calc(1em * 640 / 512);
}
.fa-icon_puzzle-piece,
.fa-icon_reply-all {
.fa-icon > .fa-icon_exclamation-triangle,
.fa-icon > .fa-icon_home,
.fa-icon > .fa-icon_puzzle-piece,
.fa-icon > .fa-icon_reply-all {
width: calc(1em * 576 / 512);
}
.fa-icon_download,
.fa-icon_eraser,
.fa-icon_filter,
.fa-icon_list-alt,
.fa-icon_power-off,
.fa-icon_reply,
.fa-icon_sync-alt,
.fa-icon_th,
.fa-icon_th-list {
.fa-icon > .fa-icon_clock,
.fa-icon > .fa-icon_cog,
.fa-icon > .fa-icon_download,
.fa-icon > .fa-icon_eraser,
.fa-icon > .fa-icon_filter,
.fa-icon > .fa-icon_info-circle,
.fa-icon > .fa-icon_list-alt,
.fa-icon > .fa-icon_power-off,
.fa-icon > .fa-icon_question-circle,
.fa-icon > .fa-icon_reply,
.fa-icon > .fa-icon_spinner,
.fa-icon > .fa-icon_sync-alt,
.fa-icon > .fa-icon_th,
.fa-icon > .fa-icon_th-list,
.fa-icon > .fa-icon_unlink {
width: calc(1em * 512 / 512);
}
.fa-icon_lock {
.fa-icon > .fa-icon_arrow-left,
.fa-icon > .fa-icon_arrow-right,
.fa-icon > .fa-icon_lock,
.fa-icon > .fa-icon_plus,
.fa-icon > .fa-icon_unlock,
.fa-icon > .fa-icon_trash-alt {
width: calc(1em * 448 / 512);
}
.fa-icon_times {
.fa-icon > .fa-icon_times {
width: calc(1em * 352 / 512);
}
.fa-icon_angle-up,
.fa-icon_angle-double-up {
.fa-icon > .fa-icon_angle-up,
.fa-icon > .fa-icon_angle-double-up {
width: calc(1em * 320 / 512);
}
.fa-icon_ellipsis-v {
.fa-icon > .fa-icon_ellipsis-v {
width: calc(1em * 192 / 512);
}

BIN
src/css/fonts/fontawesome-webfont.ttf

114
src/css/hosts-files.css

@ -1,12 +1,6 @@
@keyframes spin {
0% { transform: rotate(0deg); -webkit-transform: rotate(0deg); }
12.5% { transform: rotate(45deg); -webkit-transform: rotate(45deg); }
25% { transform: rotate(90deg); -webkit-transform: rotate(90deg); }
37.5% { transform: rotate(135deg); -webkit-transform: rotate(135deg); }
50% { transform: rotate(180deg); -webkit-transform: rotate(180deg); }
67.5% { transform: rotate(225deg); -webkit-transform: rotate(225deg); }
75% { transform: rotate(270deg); -webkit-transform: rotate(270deg); }
87.5% { transform: rotate(315deg); -webkit-transform: rotate(315deg); }
0% { transform: rotate(0); }
100% { transform: rotate(360deg); }
}
ul {
padding: 0;
@ -36,6 +30,8 @@ ul#lists {
padding: 0;
}
li.listEntry {
align-items: baseline;
display: flex;
margin: 0 auto 0 auto;
padding: 0.2em 0;
}
@ -52,93 +48,95 @@ li.listEntry > * {
text-indent: 0;
unicode-bidi: embed;
}
li.listEntry > a:nth-of-type(2) {
opacity: 0.5;
li.listEntry .content {
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
}
li.listEntry.toRemove > input[type="checkbox"] {
visibility: hidden;
}
li.listEntry.toRemove > a.content {
li.listEntry.toRemove .content {
text-decoration: line-through;
}
li.listEntry > .fa {
color: inherit;
li.listEntry > .fa-icon {
align-self: flex-end;
color: #444;
display: none;
font-size: 110%;
fill: #444;
opacity: 0.5;
vertical-align: baseline;
}
li.listEntry > a.fa:hover {
opacity: 1;
}
li.listEntry > a.support {
display: inline-block;
padding: 0.2em;
}
li.listEntry > a.support[href=""] {
li.listEntry > .status {
display: none;
}
li.listEntry > a.remove,
li.listEntry > a.remove:visited {
li.listEntry .fa-icon.status {
cursor: default;
}
li.listEntry > .fa-icon:hover {
opacity: 1;
}
li.listEntry.external .remove {
color: darkred;
fill: darkred;
}
li.listEntry.external > a.remove {
display: inline-block;
li.listEntry.external .remove {
display: inline-flex;
}
li.listEntry.mustread > a.mustread {
display: inline-block;
li.listEntry > a.fa-icon:not([href=""]) {
display: inline-flex;
}
li.listEntry.mustread > a.mustread:hover {
li.listEntry > a.mustread:hover {
color: mediumblue;
fill: mediumblue;
}
li.listEntry > .counts {
display: none;
font-size: smaller;
}
li.listEntry > input[type="checkbox"]:checked ~ .counts {
display: inline;
}
li.listEntry span.status {
color: #444;
cursor: default;
display: none;
}
li.listEntry span.status:hover {
opacity: 1;
}
li.listEntry span.unsecure {
color: darkred;
}
li.listEntry.unsecure > input[type="checkbox"]:checked ~ span.unsecure {
display: inline-block;
}
li.listEntry span.failed {
li.listEntry .unsecure {
color: darkred;
fill: darkred;
}
li.listEntry.failed span.failed {
display: inline-block;
li.listEntry.unsecure input[type="checkbox"]:checked ~ .unsecure {
display: inline-flex;
}
li.listEntry span.cache {
li.listEntry .fa-icon.remove,
li.listEntry .fa-icon.cache {
cursor: pointer;
}
li.listEntry.cached:not(.obsolete) > input[type="checkbox"]:checked ~ span.cache {
display: inline-block;
li.listEntry.cached:not(.obsolete) input[type="checkbox"]:checked ~ .cache {
display: inline-flex;
}
li.listEntry span.obsolete {
li.listEntry .obsolete {
color: hsl(36, 100%, 40%);
fill: hsl(36, 100%, 40%);
}
body:not(.updating) li.listEntry.obsolete > input[type="checkbox"]:checked ~ span.obsolete {
display: inline-block;
body:not(.updating) li.listEntry.obsolete input[type="checkbox"]:checked ~ .obsolete {
display: inline-flex;
}
li.listEntry span.updating {
transform-origin: 50% 46%;
li.listEntry .updating {
animation: spin 1s steps(8) infinite;
transform-origin: 50%;
}
body.updating li.listEntry.obsolete > input[type="checkbox"]:checked ~ span.updating {
animation: spin 1s step-start infinite;
display: inline-block;
body.updating li.listEntry.obsolete input[type="checkbox"]:checked ~ .updating {
display: inline-flex;
}
li.listEntry .failed {
color: darkred;
fill: darkred;
}
li.listEntry.failed input[type="checkbox"]:checked ~ .failed {
display: inline-flex;
}
.dim {
opacity: 0.5;
}
li.listEntry.notAnAsset {
flex-wrap: wrap;
}
li.listEntry.notAnAsset > input[type="checkbox"] ~ textarea {
display: none;
margin-left: 1.6em;

19
src/css/logger-ui.css

@ -14,6 +14,9 @@ body {
font-size: 150%;
padding: 0.4em 0.6em;
}
.fa-icon:hover {
background-color: #eee;
}
#toolbar {
background-color: white;
border: 0;
@ -61,22 +64,6 @@ body.popupPanelOn #popupPanelContainer {
#popupPanelContainer.hide {
width: 6em !important;
}
#popupPanelContainer > div {
background: #888;
border: 0;
display: none;
text-align: right;
}
#popupPanelContainer > div > span {
color: #ccc;
cursor: pointer;
display: inline-block;
font: 14px FontAwesome;
padding: 3px;
}
#popupPanelContainer > div > span:hover {
color: white;
}
#popupPanelContainer > iframe {
border: 0;
padding: 0;

9
src/css/popup.css

@ -41,6 +41,10 @@ a {
text-decoration: none;
}
.fa-icon:hover {
background-color: #eee;
}
#version {
font-size: 10px;
font-weight: normal;
@ -124,10 +128,6 @@ body .toolbar button:hover {
body .toolbar button.disabled {
color: #ccc;
}
body .toolbar button.fa {
font: 1.7em FontAwesome;
min-width: 1.4em;
}
#mtxSwitch_matrix-off.switchTrue {
color: #a00;
fill: #a00;
@ -306,6 +306,7 @@ button.disabled > span.badge {
cursor: pointer;
display: none;
font-size: 100%;
padding-right: 0.5em;
text-align: center;
}
.recipe.mustImport .importer,

41
src/css/user-rules.css

@ -20,38 +20,33 @@ html {
vertical-align: top;
width: 50%;
}
#diff .ruleActions h3 {
#diff .ruleActions > h3 {
font-weight: normal;
margin: 0 0 0.5em 0;
}
#diff .ruleActions > div {
display: flex;
justify-content: center;
}
#diff .ruleActions > div > button {
margin-right: 1em;
}
#ruleFilter {
align-items: center;
direction: ltr;
text-align: center;
display: flex;
justify-content: center;
}
#ruleFilter .fa {
#ruleFilter .fa-icon {
color: #888;
fill: #888;
}
#revertButton:after,
#commitButton:before {
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
vertical-align: baseline;
display: inline-block;
}
body[dir="ltr"] #revertButton:after {
content: '\2009\f061';
}
body[dir="rtl"] #revertButton:after {
content: '\2009\f060';
}
body[dir="ltr"] #commitButton:before {
content: '\f060\2009';
}
body[dir="rtl"] #commitButton:before {
content: '\f061\2009';
body[dir="ltr"] #revertButton > span:nth-of-type(3),
body[dir="rtl"] #revertButton > span:nth-of-type(2),
body[dir="ltr"] #commitButton > span:nth-of-type(2),
body[dir="rtl"] #commitButton > span:nth-of-type(1) {
display: none;
}
#revertButton,
#commitButton,

30
src/hosts-files.html

@ -3,9 +3,10 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>uMatrix — Hosts files</title>
<link rel="stylesheet" type="text/css" href="css/common.css">
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
<link rel="stylesheet" type="text/css" href="css/hosts-files.css">
<link rel="stylesheet" href="css/fa-icons.css">
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/dashboard-common.css">
<link rel="stylesheet" href="css/hosts-files.css">
</head>
<body>
@ -22,7 +23,7 @@
<div class="assets">
<div data-i18n="assetsHostsSection"></div>
<div>
<p><span data-i18n="hostsFilesPrompt"></span>&nbsp;<a class="fa info" href="https://github.com/gorhill/uMatrix/wiki/Preset-whitelisted-and-blacklisted-domains#preset-blacklist-rules" target="_blank">&#xf05a;</a></p>
<p><span data-i18n="hostsFilesPrompt"></span>&nbsp;<a class="fa-icon info" href="https://github.com/gorhill/uMatrix/wiki/Preset-whitelisted-and-blacklisted-domains#preset-blacklist-rules" target="_blank">info-circle</a></p>
<p id="listsOfBlockedHostsPrompt"></p>
<ul id="hosts">
<li class="listEntry notAnAsset toImport"><input type="checkbox" id="importHosts"><label for="importHosts" data-i18n="assetsImportLabel"></label><!--
@ -34,7 +35,7 @@
<div class="assets">
<div data-i18n="assetsRecipesSection"></div>
<div>
<p><span data-i18n="assetsRecipesSummary"></span>&nbsp;<a class="fa info" href="https://github.com/gorhill/uMatrix/wiki/Ruleset-recipes" target="_blank">&#xf05a;</a></p>
<p><span data-i18n="assetsRecipesSummary"></span>&nbsp;<a class="fa-icon info" href="https://github.com/gorhill/uMatrix/wiki/Ruleset-recipes" target="_blank">info-circle</a></p>
<ul id="recipes">
<li class="listEntry notAnAsset toImport"><input type="checkbox" id="importRecipes"><label for="importRecipes" data-i18n="assetsImportLabel"></label><!--
--><textarea dir="ltr" spellcheck="false" placeholder="hostsFilesExternalListsHint"></textarea>
@ -49,21 +50,22 @@
<li class="listEntry">
<input type="checkbox"><!--
--><a class="content" type="text/plain" target="_blank" href=""></a>&#8203;<!--
--><a class="fa support" href="" target="_blank">&#xf015;</a>&#8203;<!--
--><a class="fa remove" href="">&#xf014;</a>&#8203;<!--
--><a class="fa mustread" href="" target="_blank">&#xf05a;</a>&#8203;<!--
 --><span class="fa status unsecure" title="http">&#xf13e;</span>&#8203;<!--
--><span class="counts dim"></span>&#8203;<!--
 --><span class="fa status obsolete" title="hostsFilesExternalListObsolete">&#xf071;</span>&#8203;<!--
 --><span class="fa status cache">&#xf017;</span>&#8203;<!--
 --><span class="fa status updating">&#xf110;</span>&#8203;<!--
 --><span class="fa status failed">&#xf06a;</span>
--><a class="fa-icon support" href="" target="_blank">home</a>&#8203;<!--
--><span class="fa-icon remove" href="">trash-alt</span>&#8203;<!--
--><a class="fa-icon mustread" href="" target="_blank">info-circle</a>&#8203;<!--
 --><span class="fa-icon status unsecure" title="http">unlock</span>&#8203;<!--
--><span class="counts dim status"></span>&#8203;<!--
 --><span class="fa-icon status obsolete" title="hostsFilesExternalListObsolete">exclamation-triangle</span>&#8203;<!--
 --><span class="fa-icon status cache">clock</span>&#8203;<!--
 --><span class="fa-icon status updating">spinner</span>&#8203;<!--
 --><span class="fa-icon status failed">unlink</span>
</li>
</ul>
</div>
</div><!-- end of div.body -->
<script src="js/fa-icons.js"></script>
<script src="js/vapi-common.js"></script>
<script src="js/vapi-client.js"></script>
<script src="js/udom.js"></script>

47
src/img/fontawesome/fontawesome-defs.svg

@ -4,22 +4,37 @@ License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL
-->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display: none;">
<defs>
<symbol id="angle-up" viewBox="0 0 320 512"><path d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path></symbol>
<symbol id="angle-double-up" viewBox="0 0 320 512"><path d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"/></symbol>
<symbol id="download" viewBox="0 0 512 512"><path d="M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"></path></symbol>
<symbol id="ellipsis-v" viewBox="0 0 192 512"><path d="M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"/></symbol>
<symbol id="eraser" viewBox="0 0 512 512"><path d="M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"/></symbol>
<symbol id="filter" viewBox="0 0 512 512"><path d="M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"/></symbol>
<symbol id="list-alt" viewBox="0 0 512 512"><path d="M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z"/></symbol>
<symbol id="lock" viewBox="0 0 448 512"><path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"/></symbol>
<symbol id="power-off" viewBox="0 0 512 512"><path d="M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"/></symbol>
<symbol id="puzzle-piece" viewBox="0 0 576 512"><path d="M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"/></symbol>
<symbol id="reply" viewBox="0 0 512 512"><path d="M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"/></symbol>
<symbol id="reply-all" viewBox="0 0 576 512"><path d="M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"/></symbol>
<symbol id="sync-alt" viewBox="0 0 512 512"><path d="M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"/></symbol>
<symbol id="th" viewBox="0 0 512 512"><path d="M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"/></symbol>
<symbol id="th-list" viewBox="0 0 512 512"><path d="M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"/></symbol>
<symbol id="times" viewBox="0 0 352 512"><path d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"/></symbol>
<symbol id="angle-up" viewBox="0 0 320 512"><path d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path></symbol>
<symbol id="angle-double-up" viewBox="0 0 320 512"><path d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"/></symbol>
<symbol id="arrow-left" viewBox="0 0 448 512"><path d="M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"></path></symbol>
<symbol id="arrow-right" viewBox="0 0 448 512"><path d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path></symbol>
<symbol id="clock" viewBox="0 0 512 512"><path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm61.8-104.4l-84.9-61.7c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v141.7l66.8 48.6c5.4 3.9 6.5 11.4 2.6 16.8L334.6 349c-3.9 5.3-11.4 6.5-16.8 2.6z"></path></symbol>
<symbol id="cloud-download-alt" viewBox="0 0 640 512"><path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z"></path></symbol>
<symbol id="cloud-upload-alt" viewBox="0 0 640 512"><path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z"></path></symbol>
<symbol id="cog" viewBox="0 0 512 512"><path d="M444.788 291.1l42.616 24.599c4.867 2.809 7.126 8.618 5.459 13.985-11.07 35.642-29.97 67.842-54.689 94.586a12.016 12.016 0 0 1-14.832 2.254l-42.584-24.595a191.577 191.577 0 0 1-60.759 35.13v49.182a12.01 12.01 0 0 1-9.377 11.718c-34.956 7.85-72.499 8.256-109.219.007-5.49-1.233-9.403-6.096-9.403-11.723v-49.184a191.555 191.555 0 0 1-60.759-35.13l-42.584 24.595a12.016 12.016 0 0 1-14.832-2.254c-24.718-26.744-43.619-58.944-54.689-94.586-1.667-5.366.592-11.175 5.459-13.985L67.212 291.1a193.48 193.48 0 0 1 0-70.199l-42.616-24.599c-4.867-2.809-7.126-8.618-5.459-13.985 11.07-35.642 29.97-67.842 54.689-94.586a12.016 12.016 0 0 1 14.832-2.254l42.584 24.595a191.577 191.577 0 0 1 60.759-35.13V25.759a12.01 12.01 0 0 1 9.377-11.718c34.956-7.85 72.499-8.256 109.219-.007 5.49 1.233 9.403 6.096 9.403 11.723v49.184a191.555 191.555 0 0 1 60.759 35.13l42.584-24.595a12.016 12.016 0 0 1 14.832 2.254c24.718 26.744 43.619 58.944 54.689 94.586 1.667 5.366-.592 11.175-5.459 13.985L444.788 220.9a193.485 193.485 0 0 1 0 70.2zM336 256c0-44.112-35.888-80-80-80s-80 35.888-80 80 35.888 80 80 80 80-35.888 80-80z"></path></symbol>
<symbol id="download" viewBox="0 0 512 512"><path d="M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"></path></symbol>
<symbol id="ellipsis-v" viewBox="0 0 192 512"><path d="M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"/></symbol>
<symbol id="eraser" viewBox="0 0 512 512"><path d="M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"/></symbol>
<symbol id="exclamation-triangle" viewBox="0 0 576 512"><path d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></symbol>
<symbol id="filter" viewBox="0 0 512 512"><path d="M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"/></symbol>
<symbol id="home" viewBox="0 0 576 512"><path d="M488 312.7V456c0 13.3-10.7 24-24 24H348c-6.6 0-12-5.4-12-12V356c0-6.6-5.4-12-12-12h-72c-6.6 0-12 5.4-12 12v112c0 6.6-5.4 12-12 12H112c-13.3 0-24-10.7-24-24V312.7c0-3.6 1.6-7 4.4-9.3l188-154.8c4.4-3.6 10.8-3.6 15.3 0l188 154.8c2.7 2.3 4.3 5.7 4.3 9.3zm83.6-60.9L488 182.9V44.4c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12V117l-89.5-73.7c-17.7-14.6-43.3-14.6-61 0L4.4 251.8c-5.1 4.2-5.8 11.8-1.6 16.9l25.5 31c4.2 5.1 11.8 5.8 16.9 1.6l235.2-193.7c4.4-3.6 10.8-3.6 15.3 0l235.2 193.7c5.1 4.2 12.7 3.5 16.9-1.6l25.5-31c4.2-5.2 3.4-12.7-1.7-16.9z"></path></symbol>
<symbol id="info-circle" viewBox="0 0 512 512"><path d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path></symbol>
<symbol id="list-alt" viewBox="0 0 512 512"><path d="M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-6 400H54a6 6 0 0 1-6-6V86a6 6 0 0 1 6-6h404a6 6 0 0 1 6 6v340a6 6 0 0 1-6 6zm-42-92v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm0-96v24c0 6.627-5.373 12-12 12H204c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h200c6.627 0 12 5.373 12 12zm-252 12c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36zm0 96c0 19.882-16.118 36-36 36s-36-16.118-36-36 16.118-36 36-36 36 16.118 36 36z"/></symbol>
<symbol id="lock" viewBox="0 0 448 512"><path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"/></symbol>
<symbol id="plus" viewBox="0 0 448 512"><path d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path></symbol>
<symbol id="power-off" viewBox="0 0 512 512"><path d="M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"/></symbol>
<symbol id="puzzle-piece" viewBox="0 0 576 512"><path d="M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"/></symbol>
<symbol id="question-circle" viewBox="0 0 512 512"><path d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"></path></symbol>
<symbol id="reply" viewBox="0 0 512 512"><path d="M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z"/></symbol>
<symbol id="reply-all" viewBox="0 0 576 512"><path d="M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z"/></symbol>
<symbol id="spinner" viewBox="0 0 512 512"><path d="M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"></path></symbol>
<symbol id="sync-alt" viewBox="0 0 512 512"><path d="M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"/></symbol>
<symbol id="th" viewBox="0 0 512 512"><path d="M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"/></symbol>
<symbol id="th-list" viewBox="0 0 512 512"><path d="M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"/></symbol>
<symbol id="times" viewBox="0 0 352 512"><path d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"/></symbol>
<symbol id="trash-alt" viewBox="0 0 448 512"><path d="M192 188v216c0 6.627-5.373 12-12 12h-24c-6.627 0-12-5.373-12-12V188c0-6.627 5.373-12 12-12h24c6.627 0 12 5.373 12 12zm100-12h-24c-6.627 0-12 5.373-12 12v216c0 6.627 5.373 12 12 12h24c6.627 0 12-5.373 12-12V188c0-6.627-5.373-12-12-12zm132-96c13.255 0 24 10.745 24 24v12c0 6.627-5.373 12-12 12h-20v336c0 26.51-21.49 48-48 48H80c-26.51 0-48-21.49-48-48V128H12c-6.627 0-12-5.373-12-12v-12c0-13.255 10.745-24 24-24h74.411l34.018-56.696A48 48 0 0 1 173.589 0h100.823a48 48 0 0 1 41.16 23.304L349.589 80H424zm-269.611 0h139.223L276.16 50.913A6 6 0 0 0 271.015 48h-94.028a6 6 0 0 0-5.145 2.913L154.389 80zM368 128H80v330a6 6 0 0 0 6 6h276a6 6 0 0 0 6-6V128z"></path></symbol>
<symbol id="unlink" viewBox="0 0 512 512"><path d="M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z"></path></symbol>
<symbol id="unlock" viewBox="0 0 448 512"><path d="M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"></path></symbol>
</defs>
</svg>

28
src/js/cloud-ui.js

@ -19,7 +19,7 @@
Home: https://github.com/gorhill/uBlock
*/
/* global uDom */
/* global uDom, faIconsInit */
'use strict';
@ -59,7 +59,7 @@ var onCloudDataReceived = function(entry) {
uDom.nodeFromId('cloudPull').removeAttribute('disabled');
uDom.nodeFromId('cloudPullAndMerge').removeAttribute('disabled');
var timeOptions = {
let timeOptions = {
weekday: 'short',
year: 'numeric',
month: 'short',
@ -70,8 +70,8 @@ var onCloudDataReceived = function(entry) {
timeZoneName: 'short'
};
var time = new Date(entry.tstamp);
widget.querySelector('span').textContent =
let time = new Date(entry.tstamp);
widget.querySelector('[data-i18n="cloudNoData"]').textContent =
entry.source + '\n' +
time.toLocaleString('fullwide', timeOptions);
};
@ -125,7 +125,7 @@ var pullAndMergeData = function() {
/******************************************************************************/
var openOptions = function() {
var input = uDom.nodeFromId('cloudDeviceName');
let input = uDom.nodeFromId('cloudDeviceName');
input.value = self.cloud.options.deviceName;
input.setAttribute('placeholder', self.cloud.options.defaultDeviceName);
uDom.nodeFromId('cloudOptions').classList.add('show');
@ -134,7 +134,7 @@ var openOptions = function() {
/******************************************************************************/
var closeOptions = function(ev) {
var root = uDom.nodeFromId('cloudOptions');
let root = uDom.nodeFromId('cloudOptions');
if ( ev.target !== root ) {
return;
}
@ -144,7 +144,7 @@ var closeOptions = function(ev) {
/******************************************************************************/
var submitOptions = function() {
var onOptions = function(options) {
let onOptions = function(options) {
if ( typeof options !== 'object' || options === null ) {
return;
}
@ -163,22 +163,18 @@ var submitOptions = function() {
/******************************************************************************/
var onInitialize = function(options) {
if ( typeof options !== 'object' || options === null ) {
return;
}
if ( typeof options !== 'object' || options === null ) { return; }
if ( !options.enabled ) {
return;
}
if ( !options.enabled ) { return; }
self.cloud.options = options;
var xhr = new XMLHttpRequest();
let xhr = new XMLHttpRequest();
xhr.open('GET', 'cloud-ui.html', true);
xhr.overrideMimeType('text/html;charset=utf-8');
xhr.responseType = 'text';
xhr.onload = function() {
this.onload = null;
var parser = new DOMParser(),
let parser = new DOMParser(),
parsed = parser.parseFromString(this.responseText, 'text/html'),
fromParent = parsed.body;
while ( fromParent.firstElementChild !== null ) {
@ -187,6 +183,8 @@ var onInitialize = function(options) {
);
}
faIconsInit(widget);
vAPI.i18n.render(widget);
widget.classList.remove('hide');

8
src/js/fa-icons.js

@ -23,8 +23,8 @@
/******************************************************************************/
(function() {
let icons = document.querySelectorAll('.fa-icon');
let faIconsInit = function(root) {
let icons = (root || document).querySelectorAll('.fa-icon');
for ( let icon of icons ) {
if ( icon.childElementCount !== 0 ) { continue; }
let name = icon.textContent;
@ -43,4 +43,6 @@
icon.appendChild(badge);
}
}
})();
};
faIconsInit();

6
src/js/hosts-files.js

@ -1,7 +1,7 @@
/*******************************************************************************
uMatrix - a browser extension to black/white list requests.
Copyright (C) 2014-2018 Raymond Hill
Copyright (C) 2014-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -453,8 +453,8 @@ uDom('#buttonUpdate').on('click', buttonUpdateHandler);
uDom('#buttonPurgeAll').on('click', buttonPurgeAllHandler);
uDom('.assets').on('change', '.listEntry > input', onHostsFilesSettingsChanged);
uDom('.assets').on('input', '.listEntry > textarea', onHostsFilesSettingsChanged);
uDom('.assets').on('click', '.listEntry > a.remove', onRemoveExternalAsset);
uDom('.assets').on('click', 'span.cache', onPurgeClicked);
uDom('.assets').on('click', '.listEntry > .remove', onRemoveExternalAsset);
uDom('.assets').on('click', '.status.cache', onPurgeClicked);
renderHostsFiles();

8
src/popup.html

@ -4,10 +4,10 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/common.css" type="text/css">
<link rel="stylesheet" href="css/fa-icons.css" type="text/css">
<link rel="stylesheet" href="css/scope-selector.css" type="text/css">
<link rel="stylesheet" href="css/popup.css" type="text/css">
<link rel="stylesheet" href="css/fa-icons.css">
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/scope-selector.css">
<link rel="stylesheet" href="css/popup.css">
<title>uMatrix panel</title>
</head>

10
src/raw-settings.html

@ -3,16 +3,17 @@
<head>
<meta charset="utf-8">
<title data-i18n="rawSettingsPageName"></title>
<link rel="stylesheet" type="text/css" href="css/common.css">
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
<link rel="stylesheet" type="text/css" href="css/raw-settings.css">
<link rel="stylesheet" href="css/fa-icons.css">
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/dashboard-common.css">
<link rel="stylesheet" href="css/raw-settings.css">
<link rel="shortcut icon" type="image/png" href="img/icon_16.png"/>
</head>
<body>
<div class="body">
<p><span data-i18n="rawSettingsWarning"></span> <a class="fa info important" href="https://github.com/gorhill/uMatrix/wiki/Raw-settings" target="_blank">&#xf05a;</a>
<p><span data-i18n="rawSettingsWarning"></span> <a class="fa-icon info important" href="https://github.com/gorhill/uMatrix/wiki/Raw-settings" target="_blank">info-circle</a>
</p>
<p><button id="rawSettingsApply" class="custom important" type="button" disabled="true" data-i18n="genericApplyChanges"></button>&ensp;
</p>
@ -21,6 +22,7 @@
</div><!-- end of div.body -->
<script src="js/fa-icons.js"></script>
<script src="js/vapi-common.js"></script>
<script src="js/vapi-client.js"></script>
<script src="js/udom.js"></script>

18
src/settings.html

@ -3,8 +3,9 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>uMatrix — Settings</title>
<link rel="stylesheet" type="text/css" href="css/common.css">
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
<link rel="stylesheet" href="css/fa-icons.css">
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/dashboard-common.css">
<style>
div > p:first-child {
margin-top: 0;
@ -65,12 +66,12 @@ ul > li.separator {
<ul>
<li>
<input id="deleteCookies" type="checkbox" data-setting-bool><label data-i18n="privacyDeleteBlockedCookiesPrompt" for="deleteCookies"></label>
<span class="whatisthis"></span>
<span class="fa-icon whatisthis">question-circle</span>
<div class="whatisthis-expandable para" data-i18n="privacyDeleteBlockedCookiesHelp"></div>
<li>
<input id="deleteUnusedSessionCookies" type="checkbox" data-setting-bool><label data-i18n="privacyDeleteNonBlockedSessionCookiesPrompt1" for="deleteUnusedSessionCookies"></label>
<input id="deleteUnusedSessionCookiesAfter" type="text" value="60" size="3"><span data-i18n="privacyDeleteNonBlockedSessionCookiesPrompt2"></span>
<span class="whatisthis"></span>
<span class="fa-icon whatisthis">question-circle</span>
<div class="whatisthis-expandable para" data-i18n="privacyDeleteNonBlockedSessionCookiesHelp"></div>
<!--
Delete non-blocked session cookies x minutes after the last time they have been used.
@ -95,24 +96,25 @@ ul > li.separator {
<li>
<input id="clearBrowserCache" type="checkbox" data-setting-bool><label data-i18n="privacyClearCachePrompt1" for="clearBrowserCache"></label>
<input id="clearBrowserCacheAfter" type="text" value="60" size="3"> <label data-i18n="privacyClearCachePrompt2" for="clearBrowserCacheAfter"></label>
<span class="whatisthis"></span>
<span class="fa-icon whatisthis">question-circle</span>
<div class="whatisthis-expandable para" data-i18n="privacyClearCacheHelp"></div>
<li>
<input id="processReferer" type="checkbox" data-matrix-switch="referrer-spoof"><label data-i18n="privacyProcessRefererPrompt" for="processReferer"></label>
<span class="whatisthis"></span>
<span class="fa-icon whatisthis">question-circle</span>
<div class="whatisthis-expandable para" data-i18n="privacyProcessRefererHelp"></div>
<li>
<input id="noMixedContent" type="checkbox" data-matrix-switch="https-strict"><label data-i18n="privacyNoMixedContentPrompt" for="noMixedContent"></label>
<span class="whatisthis"></span>
<span class="fa-icon whatisthis">question-circle</span>
<div class="whatisthis-expandable para" data-i18n="privacyNoMixedContentHelp"></div>
<li>
<input id="processHyperlinkAuditing" type="checkbox" data-setting-bool><label data-i18n="privacyProcessHyperlinkAuditingPrompt" for="processHyperlinkAuditing"></label>
<span class="whatisthis"></span>
<span class="fa-icon whatisthis">question-circle</span>
<div class="whatisthis-expandable para" data-i18n="privacyProcessHyperlinkAuditingHelp"></div>
</ul>
</div><!-- end of div.body -->
<script src="js/fa-icons.js"></script>
<script src="js/vapi-common.js"></script>
<script src="js/vapi-client.js"></script>
<script src="js/udom.js"></script>

34
src/user-rules.html

@ -4,14 +4,15 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>uMatrix — Your rules</title>
<link rel="stylesheet" type="text/css" href="lib/codemirror/lib/codemirror.css">
<link rel="stylesheet" type="text/css" href="lib/codemirror/addon/merge/merge.css">
<link rel="stylesheet" type="text/css" href="css/common.css">
<link rel="stylesheet" type="text/css" href="css/dashboard-common.css">
<link rel="stylesheet" type="text/css" href="css/cloud-ui.css">
<link rel="stylesheet" type="text/css" href="css/user-rules.css">
<link rel="stylesheet" type="text/css" href="css/codemirror.css">
<link rel="stylesheet" href="lib/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="lib/codemirror/addon/merge/merge.css">
<link rel="stylesheet" href="css/fa-icons.css">
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/dashboard-common.css">
<link rel="stylesheet" href="css/cloud-ui.css">
<link rel="stylesheet" href="css/user-rules.css">
<link rel="stylesheet" href="css/codemirror.css">
</head>
<body>
@ -26,16 +27,20 @@
<div class="tools">
<div class="ruleActions">
<h3 data-i18n="userRulesPermanentHeader"></h3>
<button type="button" id="exportButton" data-i18n="userRulesExport"></button>
<button type="button" id="revertButton" data-i18n="userRulesRevert"></button>
<div>
<button type="button" id="exportButton" data-i18n="userRulesExport"></button>
<button type="button" id="revertButton"><span data-i18n="userRulesRevert"></span><span class="fa-icon">arrow-right</span><span class="fa-icon">arrow-left</span></button>
</div>
</div>
<div class="ruleActions">
<h3 data-i18n="userRulesTemporaryHeader"></h3>
<button type="button" id="commitButton" data-i18n="userRulesCommit"></button>
<button type="button" id="importButton" data-i18n="userRulesImport"></button>
<button type="button" id="editSaveButton" data-i18n="userRulesEditSave"></button>
<div>
<button type="button" id="commitButton"><span class="fa-icon">arrow-left</span><span class="fa-icon">arrow-right</span><span data-i18n="userRulesCommit"></span></button>
<button type="button" id="importButton" data-i18n="userRulesImport"></button>
<button type="button" id="editSaveButton" data-i18n="userRulesEditSave"></button>
</div>
</div>
<div id="ruleFilter"><span class="fa">&#xf0b0;</span>&ensp;<input type="text" size="32"></div>
<div id="ruleFilter"><span class="fa-icon">filter</span>&ensp;<input type="text" size="32"></div>
</div>
<div class="codeMirrorContainer codeMirrorMergeContainer vfill-available"></div>
</div>
@ -50,6 +55,7 @@
<script src="lib/codemirror/addon/merge/merge.js"></script>
<script src="lib/codemirror/addon/selection/active-line.js"></script>
<script src="js/fa-icons.js"></script>
<script src="js/vapi-common.js"></script>
<script src="js/vapi-client.js"></script>
<script src="js/udom.js"></script>

Loading…
Cancel
Save