[MERGE] Perfect look feature branch

bzr revid: fme@openerp.com-20120514153440-hq0r2rkna0f3dlzo
This commit is contained in:
Fabien Meghazi
2012-05-14 17:34:40 +02:00
21 changed files with 1057 additions and 628 deletions
+307 -122
View File
@@ -1,4 +1,4 @@
@charset "utf-8";
@charset "UTF-8";
@font-face {
font-family: "mnmliconsRegular";
src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot");
@@ -9,6 +9,17 @@
font-style: normal;
}
@font-face {
font-family: "EntypoRegular";
src: url("/web/static/src/font/entypo-webfont.eot") format("eot");
src: url("/web/static/src/font/entypo-webfont.eot?#iefix") format("embedded-opentype");
src: url("/web/static/src/font/entypo-webfont.woff") format("woff");
src: url("/web/static/src/font/entypo-webfont.ttf") format("truetype");
src: url("/web/static/src/font/entypo-webfont.svg") format("svg") active;
font-weight: normal;
font-style: normal;
}
.openerp.openerp-web-client-container {
height: 100%;
position: relative;
@@ -93,6 +104,11 @@
font-size: 21px;
font-weight: 300 !important;
}
.openerp .oe_e {
font-family: "entypoRegular" !important;
font-size: 34px;
font-weight: 300 !important;
}
.openerp .oe_left {
float: left;
margin-right: 8px;
@@ -107,6 +123,12 @@
.openerp .oe_wait {
cursor: wait;
}
.openerp .oe_fade {
color: #888888;
}
.openerp .oe_bold {
font-weight: bold;
}
.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'] {
display: inline-block;
border: 1px solid #ababab;
@@ -426,7 +448,6 @@
width: 100%;
height: 31px;
border-top: solid 1px #d3d3d3;
border-bottom: solid 1px black;
background-color: #646060;
background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626));
background-image: -webkit-linear-gradient(top, #646060, #262626);
@@ -435,13 +456,6 @@
background-image: -o-linear-gradient(top, #646060, #262626);
background-image: linear-gradient(to bottom, #646060, #262626);
}
.openerp .oe_topbar .oe_systray {
float: right;
}
.openerp .oe_topbar .oe_systray > div {
float: left;
padding: 0 4px 0 4px;
}
.openerp .oe_topbar .oe_topbar_item li {
float: left;
}
@@ -500,6 +514,7 @@
background: #f0eeee;
border-right: 1px solid #afafb6;
text-shadow: 0 1px 1px white;
padding-bottom: 16px;
}
.openerp a.oe_logo {
width: 220px;
@@ -596,6 +611,72 @@
-webkit-box-shadow: none;
-box-shadow: none;
}
.openerp .oe_user_menu .oe_dropdown_options li hr {
border-top: 1px solid #999999;
border-bottom: 0;
}
.openerp .oe_systray > div {
float: left;
padding: 0 4px 0 4px;
}
.openerp .oe_systray {
float: right;
}
.openerp .oe_systray .oe_systray_dropdown {
position: relative;
}
.openerp .oe_systray .oe_systray_dropdown:hover .oe_systray_dropdown_options {
display: block;
}
.openerp .oe_systray .oe_systray_dropdown_options {
background: #333333;
background: rgba(37, 37, 37, 0.9);
display: none;
position: absolute;
z-index: 900;
border: 0;
margin-left: 0;
margin-right: 0;
padding: 6px 0;
border-color: #999999;
border-color: rgba(0, 0, 0, 0.2);
border-style: solid;
border-width: 0 1px 1px;
-moz-border-radius: 0 0 6px 6px;
-webkit-border-radius: 0 0 6px 6px;
border-radius: 0 0 6px 6px;
-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
-webkit-background-clip: padding-box;
-moz-background-clip: padding-box;
background-clip: padding-box;
}
.openerp .oe_systray .oe_systray_dropdown_options li {
float: none;
display: block;
background-color: none;
}
.openerp .oe_systray .oe_systray_dropdown_options li a {
display: block;
padding: 4px 15px;
clear: both;
font-weight: normal;
line-height: 18px;
color: #eeeeee;
}
.openerp .oe_systray .oe_systray_dropdown_options li a:hover {
background-color: #292929;
background-image: -webkit-gradient(linear, left top, left bottom, from(#292929), to(#191919));
background-image: -webkit-linear-gradient(top, #292929, #191919);
background-image: -moz-linear-gradient(top, #292929, #191919);
background-image: -ms-linear-gradient(top, #292929, #191919);
background-image: -o-linear-gradient(top, #292929, #191919);
background-image: linear-gradient(to bottom, #292929, #191919);
-moz-box-shadow: none;
-webkit-box-shadow: none;
-box-shadow: none;
}
.openerp .oe_menu {
float: left;
padding: 0;
@@ -657,16 +738,16 @@
width: 100%;
display: inline-block;
}
.openerp .oe_secondary_submenu li {
.openerp .oe_secondary_submenu > li {
position: relative;
padding: 1px 0 1px 16px;
padding: 1px 0 1px 20px;
}
.openerp .oe_secondary_submenu li a {
.openerp .oe_secondary_submenu > li a {
display: block;
color: #4c4c4c;
padding: 2px 4px 2px 0;
}
.openerp .oe_secondary_submenu li .oe_menu_label {
.openerp .oe_secondary_submenu > li .oe_menu_label {
position: absolute;
top: 1px;
right: 1px;
@@ -728,7 +809,7 @@
content: "&darr";
text-indent: -99999px;
vertical-align: top;
margin-left: -8px;
margin-left: -12px;
margin-top: 4px;
margin-right: 4px;
border-top: 4px solid transparent;
@@ -739,7 +820,7 @@
}
.openerp .oe_secondary_submenu .oe_menu_opened:before {
margin-top: 6px;
margin-left: -12px;
margin-left: -16px;
margin-right: 4px;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
@@ -844,7 +925,7 @@
color: white;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
.openerp .oe_view_manager_header2 {
.openerp .oe_view_manager_header {
width: 100%;
border-top: 1px solid #cacaca;
border-bottom: 1px solid #cacaca;
@@ -859,54 +940,74 @@
-webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1);
-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1);
}
.openerp .oe_view_manager_header2 h2 {
float: left;
font-size: 18px;
margin: 1px 0;
.openerp .oe_view_manager_header .oe_header_row {
clear: both;
text-shadow: 0 1px 1px white;
}
.openerp .oe_view_manager_header2 h2 a {
color: #8a89ba;
.openerp .oe_view_manager_header .oe_header_row td {
padding: 8px;
}
.openerp .oe_view_manager_header2 td {
padding: 4px 8px;
.openerp .oe_view_manager_header .oe_header_row:last-child td {
padding-top: 0;
}
.openerp .oe_view_manager_header .oe_header_row:first-child td {
padding-top: 8px;
}
.openerp .oe_view_manager_header .oe_view_manager_sidebar {
margin: 0px auto;
width: 400px;
text-align: center;
}
.openerp .oe_view_manager_header td {
line-height: 26px;
}
.openerp .oe_view_manager_header2 .oe_button_group {
.openerp .oe_view_manager_header h2 {
font-size: 18px;
margin: 0;
float: left;
}
.openerp .oe_view_manager_header h2 a {
color: #8a89ba;
}
.openerp .oe_view_manager_header .oe_button_group {
display: inline-block;
border: 1px solid #ababab;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
.openerp .oe_view_manager_header2 .oe_button_group li {
.openerp .oe_view_manager_header .oe_button_group li {
float: left;
border-right: 1px solid #ababab;
}
.openerp .oe_view_manager_header2 .oe_button_group li:last-child {
.openerp .oe_view_manager_header .oe_button_group li:last-child {
border: none;
}
.openerp .oe_view_manager_header2 .oe_button_group a {
.openerp .oe_view_manager_header .oe_button_group a {
color: #4c4c4c;
}
.openerp .oe_view_manager_header2 .oe_button_group a:hover {
.openerp .oe_view_manager_header .oe_button_group a:hover {
text-decoration: none;
}
.openerp .oe_view_manager_header2 .oe_button_group .active {
.openerp .oe_view_manager_header .oe_button_group .active {
background: #999999;
-moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset;
-webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset;
-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset;
}
.openerp .oe_view_manager_header2 .oe_button_group .active a {
.openerp .oe_view_manager_header .oe_button_group .active a {
color: white;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
.openerp .oe_view_manager_header2 .oe_view_manager_buttons {
.openerp .oe_view_manager_header .oe_view_manager_buttons {
white-space: nowrap;
}
.openerp .oe_view_manager_body h4 {
margin: 8px 0;
}
.openerp .oe_view_manager_pager {
line-height: 26px;
}
.openerp .oe_pager_value {
float: left;
margin-right: 8px;
@@ -950,34 +1051,41 @@
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
.openerp .oe_view_manager_switch li {
padding-left: 1px;
text-align: center;
width: 24px;
height: 24px;
line-height: 24px;
line-height: 16px;
}
.openerp .oe_view_manager_switch li a {
position: relative;
}
.openerp .oe_view_manager_switch .oe_vm_switch_list:after, .openerp .oe_view_manager_switch .oe_vm_switch_tree:after {
content: "ö";
padding: 2px;
content: "i";
}
.openerp .oe_view_manager_switch .oe_vm_switch_graph:after {
content: "ó";
font-family: "mnmliconsRegular" !important;
font-size: 21px;
font-weight: 300 !important;
content: "}";
top: -2px;
position: relative;
}
.openerp .oe_view_manager_switch .oe_vm_switch_gantt:after {
content: "y";
content: "c";
}
.openerp .oe_view_manager_switch .oe_vm_switch_calendar:after {
content: "b";
content: "P";
}
.openerp .oe_view_manager_switch .oe_vm_switch_kanban:after {
content: "ó";
content: "k";
}
.openerp .oe_view_manager_switch .oe_vm_switch_diagram:after {
content: "}";
content: "f";
}
.openerp .oe_form_dropdown_section {
position: relative;
display: inline-block;
margin-right: 4px;
}
.openerp .oe_dropdown_toggle:after {
width: 0;
@@ -1028,6 +1136,7 @@
line-height: 14px;
color: #4c4c4c;
text-decoration: none;
cursor: pointer;
}
.openerp .oe_dropdown_menu li a:hover {
text-decoration: none;
@@ -1051,18 +1160,28 @@
}
.openerp .oe_searchview .VS-search .VS-search-box {
min-height: 0;
border-width: 1px;
padding: 0;
width: 410px;
width: 480px;
border: 1px solid #ababab;
-moz-border-radius: 13px;
-webkit-border-radius: 13px;
border-radius: 13px;
-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset;
-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset;
}
.openerp .oe_searchview .VS-search .VS-icon {
top: 5px;
top: 6px;
}
.openerp .oe_searchview .VS-search .VS-icon-search {
left: 5px;
left: 2px;
top: 3px;
height: 18px;
width: 18px;
}
.openerp .oe_searchview .VS-search .VS-search-inner {
margin: 0 40px 0 17px;
padding: 1px 0;
font-size: 13px;
}
.openerp .oe_searchview .VS-search .VS-search-inner input {
@@ -1080,7 +1199,6 @@
height: 22px;
}
.openerp .oe_searchview .VS-search .VS-search-inner .search_input input, .openerp .oe_searchview .VS-search .VS-search-inner .search_input .VS-input-width-tester {
padding: 0 2px;
height: inherit;
margin: 0;
}
@@ -1140,11 +1258,23 @@
height: 100%;
line-height: 23px;
padding: 0 7px 0 4px;
color: #cccccc;
color: #4c4c4c;
cursor: pointer;
}
.openerp .oe_searchview .VS-search .oe_vs_unfold_drawer:before {
content: "▾";
position: absolute;
top: 9px;
right: 8px;
width: 0;
height: 0;
display: inline-block;
content: "";
vertical-align: top;
border-top: 5px solid #4c4c4c;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
filter: alpha(opacity=50);
opacity: 0.5;
}
.openerp .oe_searchview.oe_searchview_open_drawer .oe_searchview_drawer {
display: block;
@@ -1155,7 +1285,7 @@
top: 100%;
right: 0;
background-color: white;
width: 410px;
width: 480px;
display: none;
border: 1px solid #cccccc;
text-align: left;
@@ -1221,6 +1351,15 @@
.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced.oe_opened div {
display: block;
}
.openerp .oe_view_nocontent > img {
float: left;
margin-right: 1.5em;
}
.openerp .oe_view_nocontent > div {
overflow: hidden;
padding: 6px;
font-size: 125%;
}
.openerp .oe_view_topbar {
border-bottom: 1px solid #cacaca;
background-color: #fcfcfc;
@@ -1275,7 +1414,7 @@
line-height: 24px;
vertical-align: top;
padding: 0 10px;
margin: 3px 0;
margin: 3px 4px 3px 0;
}
.openerp .oe_form_topbar button span.i {
line-height: 20px;
@@ -1326,9 +1465,28 @@
font-weight: bold;
color: #b33630;
}
.openerp .oe_form_topbar.oe_form_topbar_hifirst button:first-child, .openerp button.oe_form_button_hi {
color: white;
background: #dc5f59;
background: -moz-linear-gradient(#dc5f59, #b33630);
background: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630));
background: -webkit-linear-gradient(#dc5f59, #b33630);
-moz-box-shadow: none;
-webkit-box-shadow: none;
-box-shadow: none;
}
.openerp .oe_form_topbar.oe_form_topbar_hifirst button:first-child:hover, .openerp button.oe_form_button_hi:hover {
background: #df6b66;
background: -moz-linear-gradient(#df6b66, #bf3a33);
background: -webkit-gradient(linear, left top, left bottom, from(#df6b66), to(#bf3a33));
background: -webkit-linear-gradient(#df6b66, #bf3a33);
-moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2);
}
.openerp .oe_application .oe_form_sheetbg {
background: url(/web/static/src/img/form_sheetbg.png);
padding: 8px;
padding: 8px 0;
border-bottom: 1px solid #dddddd;
}
.openerp .oe_application .oe_form_sheet_width {
@@ -1346,12 +1504,12 @@
-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
}
.openerp .oe_form_autolayout .oe_button {
height: 22px;
height: 20px;
}
.openerp .oe_form_autolayout .oe_form_group_cell {
line-height: 18px;
padding: 2px;
height: 25px;
height: 20px;
}
.openerp .oe_form_autolayout .oe_form_group_cell > .oe_form_field_many2one,
.openerp .oe_form_autolayout .oe_form_group_cell > .oe_form_field_many2one input,
@@ -1427,11 +1585,22 @@
.openerp .oe_form select[readonly],
.openerp .oe_form textarea[readonly],
.openerp .oe_form input[disabled],
.openerp .oe_form select[disabled],
.openerp .oe_form textarea[disabled] {
.openerp .oe_form select[disabled] {
background: #e5e5e5 !important;
color: #666666;
}
.openerp .oe_form textarea[disabled] {
border: none;
border-left: 8px solid #eeeeee;
padding-left: 8px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
-box-shadow: none;
-moz-border-radius: 0px;
-webkit-border-radius: 0px;
border-radius: 0px;
color: #666666;
}
.openerp .oe_form .oe_form_field_many2one input,
.openerp .oe_form .oe_form_field_binary input,
.openerp .oe_form .oe_form_field_binary input,
@@ -1521,6 +1690,10 @@
right: 5px;
top: 3px;
}
.openerp .oe_form .oe_form_button > img {
vertical-align: -3px;
padding: 0 2px;
}
.openerp .oe_form .oe-binary-file-set {
overflow: hidden;
position: relative;
@@ -1542,10 +1715,8 @@
}
.openerp .oe_horizontal_separator {
font-weight: bold;
border: 0 solid #666666;
border-bottom-width: 1px;
margin: 3px 4px 3px 1px;
height: 17px;
font-size: 16px;
margin: 4px 0;
}
.openerp .oe_horizontal_separator:empty {
height: 5px;
@@ -1647,9 +1818,13 @@
height: auto;
line-height: 16px;
}
.openerp .oe-select-create-popup-view-form > .oe_formview > .oe_form_pager {
display: none;
}
.openerp .oe_form .oe_form_title, .openerp .oe_form .oe_form_title input {
font-size: 20px;
font-weight: bold;
height: 30px;
}
.openerp .oe_form .oe_form_group_odd_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell:nth-child(odd),
.openerp .oe_form .oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell_label {
@@ -1664,83 +1839,33 @@
.openerp .oe_form .oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell {
padding: 2px 2px 2px 8px !important;
}
.openerp .oe_listview_nocontent > img {
float: left;
margin-right: 1.5em;
}
.openerp .oe_listview_nocontent > div {
overflow: hidden;
padding: 6px;
font-size: 125%;
}
.openerp .oe-listview-content {
width: 100%;
}
.openerp .oe-listview-content thead, .openerp .oe-listview-content tfoot {
border-bottom: 1px solid #cacaca;
.openerp .oe-listview-content > thead {
border-bottom: 2px solid #cacaca;
background: #eeeeee;
}
.openerp .oe-listview-content tfoot {
border-bottom: 1px solid #cacaca;
font-weight: bold;
}
.openerp .oe-listview-content tbody {
cursor: pointer;
background: white;
}
.openerp .oe-listview-content thead {
vertical-align: top;
}
.openerp .oe-listview-content td.oe_list_checkbox:first-child, .openerp .oe-listview-content th.oe_list_checkbox:first-child {
width: 17px;
}
.openerp .oe-listview-content td.oe_list_checkbox:first-child:after, .openerp .oe-listview-content th.oe_list_checkbox:first-child:after {
border-width: 0;
}
.openerp .oe-listview-content tbody tr:nth-child(odd) td, .openerp .oe-listview-content tbody tr:nth-child(odd) th {
background-color: #f0f0fa;
background-color: #f0f0fa;
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6));
background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6);
}
.openerp .oe-listview-content tbody tr:hover td, .openerp .oe-listview-content tbody tr:hover th {
background-color: #eeeeee;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dedede));
background-image: -webkit-linear-gradient(top, #eeeeee, #dedede);
background-image: -moz-linear-gradient(top, #eeeeee, #dedede);
background-image: -ms-linear-gradient(top, #eeeeee, #dedede);
background-image: -o-linear-gradient(top, #eeeeee, #dedede);
background-image: linear-gradient(to bottom, #eeeeee, #dedede);
}
.openerp .oe-listview-content td, .openerp .oe-listview-content th {
.openerp .oe-listview-content > thead td, .openerp .oe-listview-content > thead th {
padding: 3px 6px;
line-height: 18px;
}
.openerp .oe-listview-content td button, .openerp .oe-listview-content th button {
border: none;
background: transparent;
padding: 0;
-moz-box-shadow: none;
-webkit-box-shadow: none;
-box-shadow: none;
.openerp .oe-listview-content > thead th:after {
content: "";
float: right;
margin-top: 7px;
border-width: 0 4px 4px;
border-style: solid;
border-color: black transparent;
visibility: hidden;
}
.openerp .oe-listview-content .numeric {
text-align: right;
width: 82px;
}
.openerp .oe-listview-content .numeric input {
text-align: right;
}
.openerp .oe-listview-content table .sortdown:after, .openerp .oe-listview-content table .sortdown:hover:after {
.openerp .oe-listview-content > thead th.sortup:after {
visibility: visible;
filter: alpha(opacity=60);
opacity: 0.6;
}
.openerp .oe-listview-content table .sortup:after {
.openerp .oe-listview-content > thead th.sortdown:after {
border-bottom: none;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
@@ -1752,6 +1877,66 @@
filter: alpha(opacity=60);
opacity: 0.6;
}
.openerp .oe-listview-content > tbody {
cursor: pointer;
background: white;
}
.openerp .oe-listview-content > tbody > tr {
border-top: 1px solid #dddddd;
}
.openerp .oe-listview-content > tbody > tr > td, .openerp .oe-listview-content > tbody > tr > th {
padding: 3px 6px;
line-height: 18px;
}
.openerp .oe-listview-content > tbody > tr > td > button, .openerp .oe-listview-content > tbody > tr > th > button {
border: none;
background: transparent;
padding: 0;
-moz-box-shadow: none;
-webkit-box-shadow: none;
-box-shadow: none;
}
.openerp .oe-listview-content > tbody > tr > td.oe_list_checkbox:first-child, .openerp .oe-listview-content > tbody > tr th.oe_list_checkbox:first-child {
width: 17px;
}
.openerp .oe-listview-content > tbody > tr > td.oe_list_checkbox:first-child:after, .openerp .oe-listview-content > tbody > tr th.oe_list_checkbox:first-child:after {
border-width: 0;
}
.openerp .oe-listview-content > tbody > tr > td.oe-number {
text-align: right !important;
}
.openerp .oe-listview-content > tbody > tr:nth-child(odd) {
background-color: #f0f0fa;
background-color: #f0f0fa;
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6));
background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6);
background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6);
}
.openerp .oe-listview-content > tfoot {
border-top: 2px solid #cacaca;
border-bottom: 1px solid #cacaca;
background: #eeeeee;
font-weight: bold;
}
.openerp .oe-listview-content > tbody tr:hover td, .openerp .oe-listview-content tbody tr:hover th {
background-color: #eeeeee;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dedede));
background-image: -webkit-linear-gradient(top, #eeeeee, #dedede);
background-image: -moz-linear-gradient(top, #eeeeee, #dedede);
background-image: -ms-linear-gradient(top, #eeeeee, #dedede);
background-image: -o-linear-gradient(top, #eeeeee, #dedede);
background-image: linear-gradient(to bottom, #eeeeee, #dedede);
}
.openerp .oe-listview-content .numeric {
text-align: right;
width: 82px;
}
.openerp .oe-listview-content .numeric input {
text-align: right;
}
.openerp .oe_kanban_group_title {
margin: 1px 1px 4px;
font-size: 15px;
+258 -119
View File
@@ -16,6 +16,16 @@ $colour4: #8a89ba
font-weight: normal
font-style: normal
@font-face
font-family: 'EntypoRegular'
src: url('/web/static/src/font/entypo-webfont.eot') format('eot')
src: url('/web/static/src/font/entypo-webfont.eot?#iefix') format('embedded-opentype')
src: url('/web/static/src/font/entypo-webfont.woff') format('woff')
src: url('/web/static/src/font/entypo-webfont.ttf') format('truetype')
src: url('/web/static/src/font/entypo-webfont.svg') format('svg') active
font-weight: normal
font-style: normal
@mixin vertical-gradient($startColor: #555, $endColor: #333)
background-color: $startColor
background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor)) /* Saf4+, Chrome */
@@ -123,6 +133,10 @@ $colour4: #8a89ba
font-family: "mnmliconsRegular" !important
font-size: 21px
font-weight: 300 !important
.oe_e
font-family: "entypoRegular" !important
font-size: 34px
font-weight: 300 !important
.oe_left
float: left
margin-right: 8px
@@ -133,6 +147,11 @@ $colour4: #8a89ba
clear: both
.oe_wait
cursor: wait
.oe_fade
color: #888
//font-size: 12px
.oe_bold
font-weight: bold
// }}}
// Button style {{{
a.button:link, a.button:visited, button, input[type='submit']
@@ -351,15 +370,8 @@ $colour4: #8a89ba
width: 100%
height: 31px
border-top: solid 1px #d3d3d3
border-bottom: solid 1px black
@include vertical-gradient(#646060, #262626)
.oe_systray
float: right
.oe_systray > div
float: left
padding: 0 4px 0 4px
.oe_topbar_item
li
float: left
@@ -408,6 +420,7 @@ $colour4: #8a89ba
background: #f0eeee
border-right: 1px solid #afafb6
text-shadow: 0 1px 1px white
padding-bottom: 16px
a.oe_logo
width: 220px
display: block
@@ -444,6 +457,7 @@ $colour4: #8a89ba
float: left
.oe_dropdown
position: relative
.oe_dropdown_options
float: left
background: #333
@@ -479,6 +493,52 @@ $colour4: #8a89ba
&:hover
@include vertical-gradient(#292929, #191919)
@include box-shadow(none)
hr
border-top: 1px solid #999
border-bottom: 0
// }}}
// Systray {{{
.oe_systray > div
float: left
padding: 0 4px 0 4px
.oe_systray
float: right
.oe_systray_dropdown
position: relative
.oe_systray_dropdown:hover .oe_systray_dropdown_options
display: block
.oe_systray_dropdown_options
background: #333
background: rgba(37,37,37,0.9)
display: none
position: absolute
z-index: 900
border: 0
margin-left: 0
margin-right: 0
padding: 6px 0
border-color: #999
border-color: rgba(0, 0, 0, 0.2)
border-style: solid
border-width: 0 1px 1px
@include radius(0 0 6px 6px)
@include box-shadow(0 1px 4px rgba(0,0,0,0.3))
@include background-clip()
li
float: none
display: block
background-color: none
a
display: block
padding: 4px 15px
clear: both
font-weight: normal
line-height: 18px
color: #eee
&:hover
@include vertical-gradient(#292929, #191919)
@include box-shadow(none)
// }}}
// Menu {{{
.oe_menu
@@ -527,9 +587,9 @@ $colour4: #8a89ba
margin: 0
width: 100%
display: inline-block
li
> li
position: relative
padding: 1px 0 1px 16px
padding: 1px 0 1px 20px
a
display: block
color: #4c4c4c
@@ -580,7 +640,7 @@ $colour4: #8a89ba
content: "&darr"
text-indent: -99999px
vertical-align: top
margin-left: -8px
margin-left: -12px
margin-top: 4px
margin-right: 4px
border-top: 4px solid transparent
@@ -589,7 +649,7 @@ $colour4: #8a89ba
@include opacity(0.5)
.oe_menu_opened:before
margin-top: 6px
margin-left: -12px
margin-left: -16px
margin-right: 4px
border-left: 4px solid transparent
border-right: 4px solid transparent
@@ -669,21 +729,37 @@ $colour4: #8a89ba
text-shadow: 0 1px 2px rgba(0,0,0,0.4)
// }}}
// ViewManager.header {{{
.oe_view_manager_header2
.oe_view_manager_header
width: 100%
border-top: 1px solid #cacaca
border-bottom: 1px solid #cacaca
@include vertical-gradient(#fcfcfc, #dedede)
@include box-shadow((0 1px 0 rgba(255,255,255,0.4), 0 0 9px rgba(0,0,0,0.1)))
.oe_header_row
//min-height: 26px
//line-height: 26px
clear: both
text-shadow: 0 1px 1px white
td
padding: 8px
.oe_header_row:last-child
td
padding-top: 0
.oe_header_row:first-child
td
padding-top: 8px
.oe_view_manager_sidebar
margin: 0px auto
width: 400px
text-align: center
td
line-height: 26px
h2
float: left
font-size: 18px
margin: 1px 0
margin: 0
float: left
a
color: $colour4
td
padding: 4px 8px
line-height: 26px
.oe_button_group
display: inline-block
border: 1px solid #ababab
@@ -712,6 +788,8 @@ $colour4: #8a89ba
margin: 8px 0
// }}}
// ViewManager.pager {{{
.oe_view_manager_pager
line-height: 26px
.oe_pager_value
float: left
margin-right: 8px
@@ -746,29 +824,47 @@ $colour4: #8a89ba
// ViewManager.switches {{{
.oe_view_manager_switch
li
padding-left: 1px
text-align: center
width: 24px
height: 24px
line-height: 24px
line-height: 16px
a
position: relative
.oe_vm_switch_list:after, .oe_vm_switch_tree:after
content: "ö"
padding: 2px
content: "i"
.oe_vm_switch_graph:after
content: "ó"
.oe_vm_switch_gantt:after
content: "y"
.oe_vm_switch_calendar:after
content: "b"
.oe_vm_switch_kanban:after
content: "ó"
.oe_vm_switch_diagram:after
font-family: "mnmliconsRegular" !important
font-size: 21px
font-weight: 300 !important
content: "}"
top: -2px
position: relative
.oe_vm_switch_gantt:after
content: "c"
.oe_vm_switch_calendar:after
content: "P"
.oe_vm_switch_kanban:after
content: "k"
.oe_vm_switch_diagram:after
content: "f"
//.oe_vm_switch_list:after, .oe_vm_switch_tree:after
//content: "ö"
//.oe_vm_switch_graph:after
//content: "ó"
//.oe_vm_switch_gantt:after
//content: "y"
//.oe_vm_switch_calendar:after
//content: "b"
//.oe_vm_switch_kanban:after
//content: "ó"
//.oe_vm_switch_diagram:after
//content: "}"
// }}}
// ViewManager.sidebar {{{
.oe_form_dropdown_section
position: relative
display: inline-block
margin-right: 4px
.oe_dropdown_toggle:after
width: 0
height: 0
@@ -810,6 +906,7 @@ $colour4: #8a89ba
line-height: 14px
color: #4c4c4c
text-decoration: none
cursor: pointer
&:hover
text-decoration: none
@include vertical-gradient(#f0f0fa, #eeeef6)
@@ -824,26 +921,27 @@ $colour4: #8a89ba
.VS-search
.VS-search-box
min-height: 0
border-width: 1px
padding: 0
width: 410px
//border: 1px solid #ababab
//margin-top: 0
//margin-bottom: 0
width: 480px
border: 1px solid #ababab
@include radius(13px)
@include box-shadow(0 1px 2px rgba(0,0,0,0.2) inset)
//padding: 4px 19px
//font-size: 13px
//background: url('../img/search.png') no-repeat 5px
//background-color: white
//@include radius(13px)
//@include box-shadow(0 1px 2px rgba(0,0,0,0.2) inset)
.VS-icon
top: 5px
top: 6px
.VS-icon-search
left: 5px
left: 2px
top: 3px
height: 18px
width: 18px
.VS-search-inner
margin: 0 40px 0 17px
padding: 1px 0
font-size: 13px
input
@@ -860,7 +958,6 @@ $colour4: #8a89ba
margin-left: 0
height: 22px
input, .VS-input-width-tester
padding: 0 2px
height: inherit
margin: 0
@@ -915,10 +1012,21 @@ $colour4: #8a89ba
height: 100%
line-height: 23px
padding: 0 7px 0 4px
color: #ccc
color: #4c4c4c
cursor: pointer
&:before
content: "▾"
position: absolute
top: 9px
right: 8px
width: 0
height: 0
display: inline-block
content: ""
vertical-align: top
border-top: 5px solid #4c4c4c
border-left: 5px solid transparent
border-right: 5px solid transparent
@include opacity(0.5)
&.oe_searchview_open_drawer
.oe_searchview_drawer
@@ -930,7 +1038,7 @@ $colour4: #8a89ba
top: 100%
right: 0
background-color: white
width: 410px
width: 480px
display: none
border: 1px solid #ccc
text-align: left
@@ -993,7 +1101,16 @@ $colour4: #8a89ba
div
display: block
// }}}
// View.topbar {{{
// Views Common {{{
.oe_view_nocontent
> img
float: left
margin-right: 1.5em
> div
// don't encroach on my arrow
overflow: hidden
padding: 6px
font-size: 125%
.oe_view_topbar
border-bottom: 1px solid #cacaca
@include vertical-gradient(#fcfcfc, #dedede)
@@ -1034,7 +1151,7 @@ $colour4: #8a89ba
line-height: 24px
vertical-align: top
padding: 0 10px
margin: 3px 0
margin: 3px 4px 3px 0
span.i
line-height: 20px
height: 24px
@@ -1074,10 +1191,27 @@ $colour4: #8a89ba
.oe_form_steps_active
font-weight: bold
color: #b33630
.oe_form_topbar.oe_form_topbar_hifirst button:first-child, button.oe_form_button_hi
color: white
background: #DC5F59
background: -moz-linear-gradient(#DC5F59, #B33630)
background: -webkit-gradient(linear, left top, left bottom, from(#DC5F59), to(#B33630))
background: -webkit-linear-gradient(#DC5F59, #B33630)
-moz-box-shadow: none
-webkit-box-shadow: none
-box-shadow: none
.oe_form_topbar.oe_form_topbar_hifirst button:first-child:hover, button.oe_form_button_hi:hover
background: #DF6B66
background: -moz-linear-gradient( #DF6B66, #BF3A33)
background: -webkit-gradient(linear, left top, left bottom, from( #DF6B66), to( #BF3A33))
background: -webkit-linear-gradient( #DF6B66, #BF3A33)
-moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2)
-webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2)
-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2)
.oe_application
.oe_form_sheetbg
background: url(/web/static/src/img/form_sheetbg.png)
padding: 8px
padding: 8px 0
border-bottom: 1px solid #ddd
.oe_form_sheet_width
min-width: 650px
@@ -1089,30 +1223,15 @@ $colour4: #8a89ba
min-height: 420px
border: 1px solid #afafb6
@include box-shadow(0 0 10px rgba(0,0,0,0.3))
//.avatar
// max-height: 52px
//.contacts
// li
// float: left
// width: 33%
// margin-bottom: 4px
// .avatar
// height: 40px
// width: 40px
// border: 1px solid
// border-color: #e5e5e5 #dbdbdb #d2d2d2
// .data
// padding: 2px
// line-height: 18px
// }}}
// FormView.autolayout {{{
.oe_form_autolayout
.oe_button
height: 22px
height: 20px
.oe_form_group_cell
line-height: 18px
padding: 2px
height: 25px
height: 20px
.oe_form_group_cell > .oe_form_field_many2one,
.oe_form_group_cell > .oe_form_field_many2one input,
.oe_form_group_cell > .oe_form_field_char input,
@@ -1184,9 +1303,15 @@ $colour4: #8a89ba
textarea[readonly],
input[disabled],
select[disabled],
textarea[disabled]
background: #E5E5E5 !important
color: #666
textarea[disabled]
border: none
border-left: 8px solid #eee
padding-left: 8px
@include box-shadow(none)
@include radius(0px)
color: #666
.oe_form_field_many2one input,
.oe_form_field_binary input,
.oe_form_field_binary input,
@@ -1266,6 +1391,9 @@ $colour4: #8a89ba
filter: alpha(opacity=50)
right: 5px
top: 3px
.oe_form_button > img
vertical-align: -3px
padding: 0 2px
// }}}
// FormView.binaryfile {{{
/* http://www.quirksmode.org/dom/inputfile.html
@@ -1294,10 +1422,8 @@ $colour4: #8a89ba
// FormView.separator {{{
.oe_horizontal_separator
font-weight: bold
border: 0 solid #666
border-bottom-width: 1px
margin: 3px 4px 3px 1px
height: 17px
font-size: 16px
margin: 4px 0
.oe_horizontal_separator:empty
height: 5px
.oe_vertical_separator
@@ -1387,6 +1513,8 @@ $colour4: #8a89ba
li
height: auto
line-height: 16px
.oe-select-create-popup-view-form > .oe_formview > .oe_form_pager
display: none
// }}}
// FormView.classes for openerp views {{{
@@ -1394,6 +1522,7 @@ $colour4: #8a89ba
.oe_form_title, .oe_form_title input
font-size: 20px
font-weight: bold
height: 30px
.oe_form_group_odd_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell:nth-child(odd),
.oe_form_group_label_border > tbody > tr.oe_form_group_row > td.oe_form_group_cell_label
border-right: 1px solid #ddd
@@ -1405,69 +1534,79 @@ $colour4: #8a89ba
padding: 2px 2px 2px 8px !important
// }}}
// ListView {{{
.oe_listview_nocontent
> img
float: left
margin-right: 1.5em
> div
// don't encroach on my arrow
overflow: hidden
padding: 6px
font-size: 125%
.oe-listview-content
width: 100%
thead, tfoot
border-bottom: 1px solid #cacaca
> thead
border-bottom: 2px solid #cacaca
background: #eee
tfoot
border-bottom: 1px solid #cacaca
font-weight: bold
tbody
vertical-align: top
td, th
padding: 3px 6px
line-height: 18px
th:after
content: ""
float: right
margin-top: 7px
border-width: 0 4px 4px
border-style: solid
border-color: #000 transparent
visibility: hidden
th.sortup:after
visibility: visible
@include opacity(0.6)
th.sortdown:after
border-bottom: none
border-left: 4px solid transparent
border-right: 4px solid transparent
border-top: 4px solid #000
visibility: visible
@include box-shadow(none)
@include opacity(0.6)
// TODO mit
//th:hover:after
// border-bottom: none
// border-left: 4px solid transparent
// border-right: 4px solid transparent
// border-top: 4px solid #000
// visibility: visible
// @include box-shadow(none)
// @include opacity(0.6)
> tbody
cursor: pointer
background: white
thead
vertical-align: top
td.oe_list_checkbox:first-child, th.oe_list_checkbox:first-child
width: 17px
&:after
border-width: 0
tbody tr:nth-child(odd) td, tbody tr:nth-child(odd) th
background-color: #f0f0fa
@include vertical-gradient(#f0f0fa, #eeeef6)
tbody tr:hover td, tbody tr:hover th
> tr
border-top: 1px solid #ddd
> td, > th
padding: 3px 6px
line-height: 18px
> button
border: none
background: transparent
padding: 0
@include box-shadow(none)
> td.oe_list_checkbox:first-child, th.oe_list_checkbox:first-child
width: 17px
&:after
border-width: 0
> td.oe-number
text-align: right !important
> tr:nth-child(odd)
background-color: #f0f0fa
@include vertical-gradient(#f0f0fa, #eeeef6)
> tfoot
border-top: 2px solid #cacaca
border-bottom: 1px solid #cacaca
background: #eee
font-weight: bold
> tbody tr:hover td, tbody tr:hover th
@include vertical-gradient(#eee, #dedede)
td, th
padding: 3px 6px
line-height: 18px
button
border: none
background: transparent
padding: 0
@include box-shadow(none)
.numeric
text-align: right
width: 82px
input
text-align: right
//thead th:after
//content: ""
//float: right
//margin-top: 7px
//border-width: 0 4px 4px
//border-style: solid
//border-color: #000 transparent
//visibility: hidden
table .sortdown:after, table .sortdown:hover:after
visibility: visible
@include opacity(0.6)
table .sortup:after
border-bottom: none
border-left: 4px solid transparent
border-right: 4px solid transparent
border-top: 4px solid #000
visibility: visible
@include box-shadow(none)
@include opacity(0.6)
// }}}
// KanbanView {{{
.oe_kanban_group_title
-54
View File
@@ -880,60 +880,6 @@ label.error {
text-align: left;
padding: 4px 5px;
}
/* Shortcuts*/
.oe-shortcut-toggle {
height: 20px;
margin-top: 3px;
padding: 0;
width: 24px;
cursor: pointer;
display: block;
background: url(/web/static/src/img/add-shortcut.png) no-repeat center center;
float: left;
}
.oe-shortcut-remove{
background: url(/web/static/src/img/remove-shortcut.png) no-repeat center center;
}
.oe-shortcuts {
position: absolute;
margin: 0;
padding: 6px 15px;
top: 37px;
left: 197px;
right: 0;
height: 17px;
line-height: 1.2;
}
.oe-shortcuts ul {
display: block;
overflow: hidden;
list-style: none;
white-space: nowrap;
padding: 0;
margin: 0;
}
.oe-shortcuts li {
cursor: pointer;
display: -moz-inline-stack;
display: inline-block;
display: inline; /*IE7 */
color: #fff;
text-align: center;
border-left: 1px solid #909090;
padding: 0 4px;
font-size: 80%;
font-weight: normal;
vertical-align: top;
}
.oe-shortcuts li:hover {
background-color: #666;
}
.oe-shortcuts li:first-child {
border-left: none;
padding-left: 0;
}
ul.oe-arrow-list {
padding-left: 1.1em;
margin: 0;
Binary file not shown.
+198
View File
@@ -0,0 +1,198 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
This is a custom SVG webfont generated by Font Squirrel.
Copyright : Creative Commons CC BYSA 2012
Designer : Daniel Bruce
Foundry : Daniel Bruce
Foundry URL : wwwdanielbrucese
</metadata>
<defs>
<font id="EntypoRegular" horiz-adv-x="1228" >
<font-face units-per-em="2048" ascent="1536" descent="-512" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode=" " horiz-adv-x="1024" />
<glyph unicode="&#x09;" horiz-adv-x="1024" />
<glyph unicode="&#xa0;" horiz-adv-x="1024" />
<glyph unicode="!" horiz-adv-x="972" d="M103 246q1 10 2 28.5t14.5 35t36.5 34.5q39 31 67.5 44t52 4t33.5 -17t37 -37q43 -43 198.5 114.5t114.5 198.5q-49 49 -55 74q-8 43 49 117q18 23 36 37t35 15t28.5 1t29 -12.5t23.5 -17.5t24.5 -24.5t20.5 -21.5q47 -47 -6 -186t-196.5 -282.5t-283 -196t-186.5 -4.5 l-20 18q-20 20 -24.5 25.5t-18 24t-12.5 28.5z" />
<glyph unicode="&#x22;" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" />
<glyph unicode="#" horiz-adv-x="780" d="M109 971q-18 31 14 49q33 16 47 -16l102 -197q82 23 158 -16t102 -119l136 -385q27 -82 -19.5 -162t-140.5 -113q-96 -29 -179 8t-106 119l-110 396q-20 68 6 136t88 107zM244 614.5q8 -28.5 34.5 -43t55.5 -4.5q27 10 41 37t4 53q-8 29 -34 43.5t-54 4.5q-27 -8 -41 -35 t-6 -55.5z" />
<glyph unicode="$" d="M102 639q0 10 11 18l120 82q8 8 27 13q14 6 29 6h182v194q0 20 21 21h45q20 0 20 -21v-880q0 -20 -20 -21h-45q-20 0 -21 21v450h-182q-8 0 -29 4q-20 8 -27 13l-120 84q-11 4 -11 16zM588 860h350q12 0 29 -6q18 -4 26 -12l121 -82q12 -10 12 -19q0 -10 -12 -16 l-121 -84q-6 -4 -26 -12q-20 -4 -29 -4h-309z" />
<glyph unicode="%" horiz-adv-x="1128" d="M104 264v375q0 12 1 14t18 -2q23 -12 202 -106t193 -101q20 -10 47 -10q25 0 45 10q14 6 193.5 100.5t202.5 106.5q20 10 20 -12v-375q0 -16 -17.5 -32.5t-33.5 -16.5h-821q-16 0 -33 16.5t-17 32.5zM106.5 797.5q4.5 11.5 24.5 11.5h866q20 0 24.5 -11.5t-4.5 -24.5 t-22 -19q-373 -201 -385 -207q-20 -10 -45 -10q-27 0 -47 10q-12 6 -385 207q-12 6 -21.5 19t-5 24.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1005" d="M102 113l52 243l297 295l258 260q55 10 129 -63q72 -72 63 -129l-258 -258l-297 -297zM166 258q33 -18 47 -35q23 -23 37 -47l82 19l24 22q-2 45 -51 96q-23 23 -47.5 36t-36.5 16l-14 2l-23 -25z" />
<glyph unicode="'" horiz-adv-x="1165" d="M104 252q-2 98 84 197q37 35 236 234.5t272 270.5q82 82 181 56q45 -12 79.5 -47t47.5 -82q27 -98 -54 -179l-485 -485q-43 -45 -90 -47q-49 -6 -82 27q-31 25 -28 76t46 96l342 340q27 27 49 0q27 -25 0 -52l-340 -340q-45 -45 -20 -69q8 -8 25 -8q20 2 47 26l485 486 q51 53 35 110q-14 61 -78 78q-57 16 -108 -35l-508 -508q-66 -76 -64 -144.5t53 -119.5q49 -51 119 -53t146 63l505 508q25 25 51.5 0.5t0.5 -51.5l-508 -508q-84 -84 -189 -84q-102 0 -176 74q-72 72 -74 170z" />
<glyph unicode="(" horiz-adv-x="1126" d="M102 528l369 332v-198q317 0 483 -312q51 -100 70 -186q-88 156 -214 201t-339 45v-224z" />
<glyph unicode=")" d="M102 530l371 330v-137l-217 -193l217 -200v-144zM358 530l371 330v-198q106 0 186 -51.5t118 -124t61.5 -146.5t27.5 -125l4 -51q-88 158 -172 202t-225 44v-224z" />
<glyph unicode="*" horiz-adv-x="1126" d="M102 164q4 20 13.5 54t51.5 119t98.5 150.5t159.5 120t230 54.5v198l369 -330l-369 -344v224q-213 0 -339 -45t-214 -201z" />
<glyph unicode="+" horiz-adv-x="1167" d="M102 51v109q0 47 209 125q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 42 115.5t160.5 60.5t162 -60.5t42.5 -115.5l-14 -90q18 -8 19 -43q-2 -29 -9.5 -44.5t-14.5 -17.5t-14 -7t-10 -17 q-8 -49 -31.5 -76t-23.5 -49q0 -63 36 -98.5t130 -69.5q209 -78 209 -125v-109h-481h-482z" />
<glyph unicode="," d="M102 76v180q0 45 88 80q76 31 105 61.5t29 85.5q0 20 -18.5 45t-26.5 68q-2 10 -18.5 21.5t-20.5 54.5q0 14 4 23.5t8 13.5l4 2q-8 45 -10 80q-4 49 32.5 102t129 53t130 -53t33.5 -102l-10 -80q14 -8 14 -39q-2 -27 -7 -40.5t-11 -14.5t-11 -6t-7 -15 q-8 -43 -26.5 -67.5t-18.5 -45.5q0 -55 28.5 -85.5t104.5 -61.5q188 -76 188 -125v-135h-713zM688 616q0 10 3 17.5t5 9.5l4 2q-6 33 -8 60q-2 37 25.5 76.5t97.5 39.5q68 0 96.5 -40t26.5 -76l-8 -60q10 -6 10 -29q-2 -33 -14.5 -41t-14.5 -16q-6 -33 -19 -51.5t-13 -32.5 q0 -41 21.5 -65.5t78.5 -47.5q113 -45 135 -79q4 -8 7 -59.5t5 -100.5v-47h-229v147q0 53 -30.5 80t-157.5 88q43 31 43 84q0 14 -14.5 32.5t-20.5 51.5q-2 8 -14.5 16t-14.5 41z" />
<glyph unicode="-" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
<glyph unicode="." d="M102 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM205 205h819v614h-819v-614zM307 311v92h256v-92h-256zM307 465v92h256v-92h-256zM307 618v93h256v-93h-256zM666 311q0 72 4 72q88 25 88 68 q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256z" />
<glyph unicode="/" d="M102 164v563q0 23 14.5 37t37.5 14h295q-33 -25 -62 -50.5t-39 -39.5l-12 -12h-131v-461h665v55l103 86v-192q0 -20 -15.5 -35.5t-35.5 -15.5h-768q-23 0 -37.5 15.5t-14.5 35.5zM373 342q0 8 1 23.5t9 57.5t22.5 81t45 86t72.5 81t110.5 57.5t152.5 23.5v159l340 -256 l-340 -266v182q-170 0 -248.5 -43t-164.5 -186z" />
<glyph unicode="0" horiz-adv-x="716" d="M102 666q0 106 75 181t181.5 75t181 -75t74.5 -181q0 -211 -223 -519l-33 -45q-10 12 -27.5 36t-61.5 91.5t-77.5 133t-61.5 150.5t-28 153zM219 662q0 -57 41 -97.5t98.5 -40.5t97.5 40t40 97.5t-40 98.5t-98 41q-59 0 -99 -40t-40 -99z" />
<glyph unicode="1" d="M102 137v600q0 18 17 29l239 152q18 10 35 0l221 -140l224 140q18 10 34 0l240 -152q14 -10 14 -29v-600q0 -20 -16 -31q-8 -4 -16.5 -4t-16.5 4l-223 140l-221 -140q-18 -10 -35 0l-221 140l-223 -140q-16 -10 -33 0q-19 11 -19 31zM170 199l172 108v518l-172 -108v-518 zM410 307l172 -108v518l-172 108v-518zM649 199l172 108v518l-172 -108v-518zM889 307l172 -108v518l-172 108v-518z" />
<glyph unicode="2" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM362 281q4 27 12.5 68.5t42.5 131.5t77 133q45 45 128 78t144 45l61 11q-4 -27 -11 -69t-41 -132t-79 -133q-45 -45 -128 -78t-144 -45zM524 514q0 -31 20.5 -51.5t50.5 -20.5t50 21q53 53 90 192q-137 -37 -190 -90q-21 -20 -21 -51z" />
<glyph unicode="3" horiz-adv-x="1085" d="M102 516q453 254 711 379q23 10 50.5 25.5t38.5 20.5t26.5 9t24 1t16.5 -11t11 -17.5t-1 -23.5t-9 -25.5t-20.5 -40t-25.5 -49.5q-55 -115 -149.5 -293t-160.5 -298l-67 -121l-58 389zM565 553l29 -238l283 525z" />
<glyph unicode="4" horiz-adv-x="1085" d="M102 512q0 182 129 311t311.5 129t311.5 -129t129 -311t-129 -311t-311.5 -129t-311.5 129t-129 311zM184 475q14 -127 104.5 -217t217.5 -102v196h72v-196q127 12 217 102t104 217h-199v72h199q-14 127 -104 218t-217 103v-198h-72v198q-127 -12 -217 -103t-105 -218 h199v-72h-199z" />
<glyph unicode="5" horiz-adv-x="1024" d="M102 512q0 63 45.5 108.5t108.5 45.5q53 0 92 -33l268 162q-2 8 -2 24q0 63 45.5 108.5t108.5 45.5t108.5 -45t45.5 -108.5t-45.5 -108.5t-108.5 -45q-49 0 -94 30l-268 -159q4 -16 4 -24.5t-4 -25.5l268 -161q43 33 94 32q63 0 108.5 -45t45.5 -108.5t-45.5 -108.5 t-108.5 -45t-108.5 45t-45.5 109q0 16 2 24l-268 160q-41 -31 -92 -31q-63 0 -108.5 45.5t-45.5 108.5z" />
<glyph unicode="6" horiz-adv-x="1089" d="M104 651q0 94 72 160q66 57 156 57t153 -57l60 -53l57 53q66 57 156 57t155 -57q72 -66 72 -160t-72 -159l-368 -338l-369 338q-72 65 -72 159z" />
<glyph unicode="7" horiz-adv-x="1105" d="M102 618h328l123 345l121 -345h330l-269 -202l94 -355l-276 213l-279 -213l95 355z" />
<glyph unicode="8" horiz-adv-x="1126" d="M102 227v316q0 45 43 45h162v-410h-160q-45 0 -45 49zM358 178v410h17q57 0 128.5 75.5t90.5 133.5q6 23 8 66.5t12.5 63t38.5 19.5q74 0 74 -141l-10 -160q129 4 188 4q119 0 119 -149v-246q0 -61 -72.5 -119.5t-152.5 -58.5h-215q-51 0 -109 51t-117 51z" />
<glyph unicode="9" d="M102 307v307q0 41 31 72t72 31h194v-318h359h10v-92q0 -43 -29.5 -72.5t-72.5 -29.5h-256l-154 -154v154h-51q-41 0 -72 29.5t-31 72.5zM461 461v409q0 41 30.5 72t71.5 31h461q43 0 72.5 -31t29.5 -72v-307q0 -43 -29.5 -72.5t-72.5 -29.5h-51v-154l-154 154h-358z" />
<glyph unicode=":" horiz-adv-x="1024" d="M102 410v358q0 41 30 71.5t73 30.5h614q41 0 72 -30.5t31 -71.5v-358q0 -43 -31 -73t-72 -30h-205v-153l-204 153h-205q-43 0 -73 30t-30 73z" />
<glyph unicode=";" horiz-adv-x="983" d="M102 174v72q115 0 185 110q55 88 26 150q-16 37 -63 37q-61 0 -104.5 45t-43.5 108.5t43 108.5t105 45q150 0 188 -150q39 -143 -41 -309q-82 -172 -227 -209q-33 -8 -68 -8zM532 174v72q115 0 185 110q55 88 26 150q-16 37 -63 37q-61 0 -104.5 45t-43.5 108.5t43 108.5 t105 45q150 0 188 -150q39 -143 -41 -309q-82 -172 -227 -209q-33 -8 -68 -8z" />
<glyph unicode="&#x3c;" horiz-adv-x="1208" d="M102 393v180q0 23 17.5 42.5t38.5 19.5h891q20 0 38.5 -19.5t18.5 -42.5v-180q0 -20 -18.5 -40.5t-38.5 -20.5h-101l45 -256h-778l45 256h-102q-20 0 -38 20.5t-18 40.5zM146.5 716q3.5 9 11.5 11q23 10 104.5 38t99.5 28h48v153h389v-153h45q18 0 100 -28t105 -38 q8 -2 11 -11t-3 -17.5t-19 -8.5h-870q-12 0 -18.5 8.5t-3 17.5zM317 178h574l-72 334h-430z" />
<glyph unicode="=" horiz-adv-x="1026" d="M105.5 672.5q9.5 109.5 113.5 197.5q18 14 24.5 29.5t6.5 25t6 19.5t25 17q27 10 48 -10.5t54 -20.5q135 2 204.5 -67.5t164.5 -274.5q16 -35 40.5 -53.5t46 -22.5t45 -23.5t36.5 -56.5q23 -63 -77 -164.5t-259 -161.5q-168 -57 -303.5 -44.5t-157.5 75.5 q-20 57 12.5 115.5t18.5 114.5q-58 196 -48.5 305.5zM193 164q4 -12 51 -23.5t137 -5.5t180 39t163 87t101.5 93t24.5 54q-6 20 -48 31.5t-128 1t-190.5 -49.5t-177.5 -88t-96 -85t-17 -54zM274 231q82 72 224 121q8 4 39 15v-2q14 -41 -18 -84t-89 -64q-99 -39 -156 14z " />
<glyph unicode="&#x3e;" horiz-adv-x="1024" d="M102 295q0 78 58 135l153 152q72 72 147 81t130 -47q16 -14 16 -34.5t-16 -36.5q-14 -16 -36 -16.5t-36 16.5q-49 49 -133 -35l-154 -152q-27 -27 -26 -63q0 -35 26 -66q27 -27 66 -26.5t65 26.5l41 43q37 33 72 -2q16 -14 16.5 -35.5t-16.5 -35.5l-41 -41 q-57 -55 -137 -55.5t-137 55.5q-58 57 -58 137zM436 401q-35 37 0 72q14 14 35 14t37 -14q49 -49 123 25l164 161q27 27 26 64q0 35 -26 65q-68 61 -121 9l-51 -52q-37 -33 -72 3q-14 14 -14 34.5t14 36.5l51 51q55 53 130 50.5t134 -60.5q55 -55 56 -137q0 -80 -56 -135 l-164 -162q-76 -76 -153 -76q-64 0 -113 51z" />
<glyph unicode="?" horiz-adv-x="1126" d="M102 815l95 33q92 68 155.5 88t99 4t64.5 -51t63.5 -73t81 -63.5t132.5 -20.5t204 52q14 6 22.5 -1t0.5 -19q-98 -141 -169 -218t-114 -92.5t-73.5 -2t-61.5 38t-65.5 40t-95 -4t-140.5 -87.5l92 -362h-104z" />
<glyph unicode="@" horiz-adv-x="1064" d="M102 377q82 47 82 135q0 78 -82 125q12 43 35 86q76 -18 139 45q55 55 35 139q43 23 84 35q51 -82 137 -82q84 0 136 82q41 -12 84 -35q-20 -84 34 -139q63 -63 140 -45q20 -39 37 -86q-84 -47 -84 -125t84 -125q-16 -47 -37 -86q-76 18 -140 -45q-55 -59 -34 -139 q-43 -23 -84 -35q-51 82 -136 82q-86 0 -137 -82q-41 12 -84 35q20 80 -35 139q-55 55 -139 35q-23 43 -35 86zM344 512q0 -78 55.5 -132t133 -54t132 54t54.5 132t-54.5 132t-132 54t-133 -54t-55.5 -132z" />
<glyph unicode="A" horiz-adv-x="1128" d="M109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10 q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2 q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
<glyph unicode="B" horiz-adv-x="1126" d="M102 852q0 16 10.5 26.5t26.5 10.5h176q51 94 248 94q199 0 250 -94h176q14 0 24.5 -11.5t10.5 -25.5q0 -78 -21.5 -140.5t-64.5 -109.5t-76 -73.5t-90 -63.5q-80 -53 -113.5 -89t-33.5 -87v-68q74 -8 121 -31.5t47 -56.5q0 -39 -67 -65.5t-163 -26.5q-94 0 -160.5 26.5 t-66.5 65.5q0 33 47 56.5t121 31.5v68q0 51 -34 86t-116 90q-57 39 -89 63.5t-76 72.5t-65.5 110.5t-21.5 140.5zM176 817q8 -94 55.5 -153.5t128.5 -116.5q-49 106 -55 270h-129zM369 841.5q0 -12.5 18.5 -29.5t65.5 -32.5t110 -15.5q66 0 113 15.5t64.5 32.5t17.5 29.5 t-17.5 30t-64.5 33t-113 15.5q-63 0 -110 -15.5t-65.5 -33t-18.5 -30zM766 547q82 55 129 115.5t55 154.5h-129q-2 -157 -55 -270z" />
<glyph unicode="C" horiz-adv-x="1189" d="M104 368q4 22 21 33l477 338q25 16 55 17l162 2q31 -4 47 -27l29 -41q132 98 132 216q0 37 -13 77q-10 29 18 39q8 3 14 3q18 0 25 -21q16 -48 16 -94q0 -57 -25 -110q-46 -95 -132 -161l18 -27q16 -23 8 -55l-51 -160q-12 -31 -35 -47l-477 -338q-18 -13 -33 -13 q-17 0 -30 17l-217 314q-9 12 -10 27q0 6 1 11zM723 605q-2 -8 -2 -16q0 -24 14 -44q20 -29 53 -35q8 -1 15 -1q24 0 47 15q34 24 34 65q0 8 -1 17l-31 -18q-4 -2 -14 -2q-20 0 -27 16q-14 27 14 43q2 0 25 12q-24 19 -49 19l-45 -17q-27 -20 -33 -54z" />
<glyph unicode="D" d="M102 205v461q0 41 31 71.5t72 30.5h123q33 0 41 29l32 96q8 29 39 29h348q35 0 41 -29l33 -96q6 -29 39 -29h123q43 0 72.5 -30.5t29.5 -71.5v-461q0 -43 -29.5 -73t-72.5 -30h-819q-41 0 -72 30t-31 73zM358 460.5q0 -106.5 75 -181t181.5 -74.5t181 74.5t74.5 181 t-74.5 181.5t-181 75t-181.5 -75t-75 -181.5zM461 460.5q0 63.5 45 108.5t108.5 45t108.5 -45t45 -108.5t-45 -108.5t-108.5 -45t-108.5 45t-45 108.5zM952 628.5q0 -14.5 11.5 -24.5t26 -10t24.5 10t10 25q0 37 -35 37q-14 0 -25.5 -11.5t-11.5 -26z" />
<glyph unicode="E" horiz-adv-x="1046" d="M102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" />
<glyph unicode="F" horiz-adv-x="1210" d="M104 475q10 121 107.5 241t220.5 156q100 28 196 29q188 0 353 -110q74 -49 104 -114q24 -50 24 -87q0 -11 -2 -21q-9 -43 -36 -49q-16 -4 -55 10q-30 11 -63 12q-9 0 -19 -1q-43 -4 -84 -47q-24 -36 -24 -62q0 -8 2 -14q9 -29 35 -67t26 -52q0 -18 -22.5 -45 t-65.5 -57.5t-123 -52t-178 -21.5q-190 0 -298 102q-98 93 -98 225q-1 12 0 25zM578 389q0 -31 22.5 -53.5t55 -22.5t55 22.5t22.5 53.5q0 33 -22.5 55.5t-55 22.5t-55 -22.5t-22.5 -55.5z" />
<glyph unicode="G" horiz-adv-x="1169" d="M104 180q45 102 132.5 197.5t181.5 157t181 108.5t142 68l58 20q-16 0 -43 -1t-106 -14.5t-152.5 -39t-166.5 -86t-163 -144.5q-4 30 -4 59q0 203 180 308q135 79 347 79q80 0 171 -11q174 -20 203 -52q2 -2 2 -4q0 -3 -4 -6q-78 -41 -133.5 -111.5t-81 -135t-67.5 -134 t-95 -106.5q-73 -52 -175 -52q-96 0 -216 46q-68 -76 -115 -179q-7 -15 -23 -14q-11 0 -26 6q-29 13 -29 31q0 5 2 10z" />
<glyph unicode="H" horiz-adv-x="800" d="M111 115q-7 19 -7 38q0 39 27 79q41 60 119 90q45 17 87 16q39 0 75 -14v669h82q0 -37 31.5 -80t69.5 -79.5t70.5 -89t32.5 -105.5t-43 -129q-20 -33 -26 -14q-2 6 0 14q10 18 7 58t-13.5 80t-45 74t-83.5 42v-547q2 -51 -39 -98t-107 -72q-46 -17 -89 -17q-29 0 -57 8 q-68 20 -91 77z" />
<glyph unicode="I" horiz-adv-x="1087" d="M104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283 h-95q-39 -190 -114 -191q-78 0 -117 191h-94z" />
<glyph unicode="J" d="M102 338l82 174l-82 174h103l114 -102h183l-127 409h102l230 -409h266h16q10 0 37 -4.5t47.5 -11.5t36.5 -21.5t16 -34.5q0 -33 -38.5 -50.5t-75.5 -19.5l-39 -2h-266l-230 -409h-102l127 409h-183l-114 -102h-103z" />
<glyph unicode="K" horiz-adv-x="1150" d="M104 512q0 191 134 328q135 139 329 143h6q191 0 329 -134q140 -136 145 -331v-6q0 -191 -135 -329q-136 -140 -330 -142h-12q-187 0 -323 133q-143 140 -143 338zM211 324l106 63q-29 57 -28.5 125t28.5 125l-106 63q-45 -86 -45 -185q0 -107 45 -191zM350 512 q0 -94 65.5 -159.5t159.5 -65.5q92 0 159 65.5t67 159.5t-66.5 159.5t-159.5 65.5q-94 0 -159.5 -65.5t-65.5 -159.5zM385 147q94 -45 187 -45h8q94 0 184 48l-64 104q-61 -29 -125 -29q-66 0 -126 29zM385 874l64 -104q61 29 126 29q63 0 125 -29l64 104q-90 47 -195 48 q-100 -5 -184 -48zM831 387l107 -63q47 88 47 194q-2 98 -47 182l-107 -63q31 -61 31 -125t-31 -125z" />
<glyph unicode="L" horiz-adv-x="1146" d="M102 352q0 96 54.5 175t142.5 114q12 143 118.5 242.5t254.5 99.5q154 0 263 -109.5t109 -263.5q0 -145 -99 -251.5t-243 -118.5q-35 -88 -113.5 -143.5t-176.5 -55.5q-127 0 -218.5 91t-91.5 220zM102 868q0 43 31 75t76 32q43 0 73.5 -32t30.5 -75q0 -45 -30.5 -75.5 t-73.5 -30.5q-45 0 -76 30.5t-31 75.5zM150 868.5q0 -24.5 17 -42t42 -17.5q23 0 40 17.5t17 42t-17.5 41t-39.5 16.5q-25 0 -42 -16.5t-17 -41zM205 352q0 -86 61.5 -146.5t145.5 -60.5q119 0 180 103q-106 23 -184 99.5t-101 182.5q-102 -61 -102 -178zM416 559 q14 -76 70.5 -131t134.5 -72q-2 82 -61.5 141.5t-143.5 61.5zM416 662q125 0 215 -89.5t92 -216.5q90 16 149.5 89t59.5 165q0 106 -77 183t-183 77q-94 0 -166 -59t-90 -149z" />
<glyph unicode="M" d="M102 512q0 14 20.5 45t64.5 73t101.5 80t144.5 63.5t181.5 25.5t181.5 -25.5t144 -63.5t101 -80t64.5 -73t20.5 -45t-20.5 -45t-64.5 -73t-101 -80t-144 -63.5t-181.5 -25.5t-181.5 25.5t-144.5 63.5t-101.5 80t-64.5 73t-20.5 45zM385 512q0 -92 66.5 -156.5 t162.5 -64.5q94 0 161 64.5t67 156.5q0 90 -66.5 155.5t-161 65.5t-162 -65.5t-67.5 -155.5zM500 512q0 45 33.5 78t80.5 33q14 0 10.5 -24t-12 -48.5t1.5 -38.5q6 -8 36 -3t51.5 11t25.5 -8q0 -45 -32.5 -78t-80 -33t-81 33t-33.5 78z" />
<glyph unicode="N" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM537 498v280h71v-252 l154 -153l-51 -49z" />
<glyph unicode="O" horiz-adv-x="860" d="M102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86 t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
<glyph unicode="P" horiz-adv-x="1126" d="M102 154v614q0 41 30 71.5t73 30.5h45v-102h164v102h297v-102h163v102h48q41 0 71.5 -30.5t30.5 -71.5v-614q0 -43 -30.5 -73t-71.5 -30h-717q-43 0 -73 30t-30 73zM205 154h717v409h-717v-409zM297 799v174h72v-174h-72zM758 799v174h71v-174h-71z" />
<glyph unicode="Q" horiz-adv-x="618" d="M104 536q0 16 86 122q90 112 184 215q90 99 98 100q5 -4 -76 -191q-79 -182 -79 -192q2 -5 97.5 -44.5t99.5 -56.5q0 -17 -88 -124q-90 -111 -183 -214q-90 -99 -97 -100q-5 2 35 94.5t81 187.5q39 91 39 100q-2 7 -97 47q-100 42 -100 56z" />
<glyph unicode="R" horiz-adv-x="778" d="M102 115v118q0 37 31 79t69 73t68.5 66.5t30.5 60.5q0 27 -30.5 61.5t-68.5 65.5t-69 72t-31 77v121q0 35 88.5 75t199 40t198.5 -40t88 -75v-121q0 -37 -31 -77.5t-68.5 -71.5t-68.5 -65.5t-31 -61.5q0 -25 31 -60.5t68.5 -66.5t68.5 -73t31 -79v-118q0 -35 -88 -75 t-198.5 -40t-199 40t-88.5 75zM164 840l2 -52q0 -35 92 -122q6 -6 22.5 -21.5t23.5 -22.5l20 -20q12 -12 17 -21.5t11 -20.5t9.5 -23.5t3.5 -24.5q0 -14 -5.5 -29.5t-9.5 -24.5t-18.5 -25.5t-20.5 -23t-26.5 -25.5t-26.5 -26q-92 -88 -92 -125v-67q8 4 68.5 23.5t95.5 45 t35 60.5q0 18 12 25.5t25.5 0t13.5 -25.5q0 -35 34.5 -60.5t95 -45t68.5 -23.5v67q0 35 -94 125q-4 4 -29.5 29t-31.5 32t-20.5 25.5t-18.5 34t-4 33.5t4 33.5t18.5 34t20.5 25.5t31.5 32t29.5 29q94 90 94 122l2 52q-106 -53 -227 -54q-123 1 -225 54zM164 889q-1 -3 -2 -5 q0 -5 6 -7q90 -55 221 -56q135 0 225 51q5 3 6 9q0 10 -22 24q-96 55 -205 56q-125 0 -211 -56z" />
<glyph unicode="S" horiz-adv-x="983" d="M102 240q0 47 34 80.5t81 33.5q49 0 83 -33.5t34 -80.5q0 -49 -34 -83t-83 -34q-47 0 -81 34t-34 83zM102 537v120q221 0 378 -156.5t157 -377.5h-121q0 172 -122 293t-292 121zM102 780v121q322 0 550.5 -228.5t228.5 -549.5h-123q0 272 -192 464.5t-464 192.5z" />
<glyph unicode="T" horiz-adv-x="1208" d="M102 711q209 211 503 211t501 -211l-72 -72q-178 180 -430 180t-430 -180zM246 567q150 150 359.5 150t357.5 -150l-72 -73q-119 121 -286 120.5t-288 -120.5zM389 422q90 90 215 90t215 -90l-71 -72q-59 59 -143.5 59.5t-143.5 -59.5zM504 205q0 43 29.5 72.5t70.5 29.5 q43 0 73 -29.5t30 -72.5t-30 -73t-73 -30q-41 0 -70.5 30t-29.5 73z" />
<glyph unicode="U" horiz-adv-x="921" d="M102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92 q0 113 -102.5 113t-102.5 -113v-92z" />
<glyph unicode="V" horiz-adv-x="921" d="M102 154v399q0 23 15.5 42t36.5 19h409v144q0 53 -27.5 82.5t-74.5 29.5q-102 0 -103 -112v-41h-102v20q0 113 52 174.5t152.5 61.5t153 -61.5t52.5 -174.5v-123h92q20 0 40.5 -20.5t20.5 -40.5v-399q0 -20 -14 -41t-35 -27l-61 -18q-43 -16 -101 -17h-297q-57 0 -100 17 l-61 18q-20 6 -34 25.5t-14 42.5z" />
<glyph unicode="W" horiz-adv-x="890" d="M104 476q4 30 29 48q23 16 52.5 12t45.5 -26l121 -160l303 488q14 25 44 31q9 2 18 3q20 0 37 -12q25 -14 31 -44q2 -9 3 -17q0 -20 -12 -37l-356 -576q-23 -33 -58 -32h-4q-35 0 -57 28l-182 242q-15 18 -15 42q-1 5 0 10z" />
<glyph unicode="X" horiz-adv-x="686" d="M102 306.5q0 25.5 19 43.5l141 162l-141 162q-18 16 -18.5 41.5t18 44t44 18.5t42.5 -18l137 -156l135 156q18 18 44 18t42 -18q18 -18 18.5 -44t-18.5 -42l-141 -162l141 -162q18 -18 18.5 -43.5t-18.5 -42.5q-16 -18 -41.5 -18t-44.5 18l-135 154l-137 -154 q-16 -18 -42 -18t-44 18q-19 17 -19 42.5z" />
<glyph unicode="Y" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM272 461h519v104h-519v-104z" />
<glyph unicode="Z" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM274 459h207v-205h105v205h207v104h-207v207h-105v-207h-207v-104z" />
<glyph unicode="[" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM287 354l88 -88l157 158l156 -158l88 88l-155 158l155 156l-88 90l-156 -158l-157 158l-88 -90l155 -156z" />
<glyph unicode="\" horiz-adv-x="798" d="M102 512q0 51 31 51h533q31 0 30.5 -51t-30.5 -51h-533q-31 0 -31 51z" />
<glyph unicode="]" horiz-adv-x="798" d="M102 512q0 51 31 51h215v215q0 31 51.5 31t51.5 -31v-215h215q31 0 30.5 -51t-30.5 -51h-215v-215q0 -31 -51.5 -31t-51.5 31v215h-215q-31 0 -31 51z" />
<glyph unicode="^" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM215 512q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM319 258zM346 233q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM825 766z " />
<glyph unicode="_" horiz-adv-x="675" d="M102 487q92 80 193.5 129.5t155.5 49.5q78 0 34 -166l-71 -275q-16 -66 6 -65q43 0 123 61l30 -41q-88 -88 -180 -134t-143 -46q-102 0 -55 180l61 260q16 59 0 60q-14 0 -56 -18.5t-71 -39.5zM326 897q0 45 36.5 86t98.5 41q49 0 76.5 -28.5t27.5 -71.5q0 -51 -40 -90 t-97 -39q-49 0 -76.5 27.5t-25.5 74.5z" />
<glyph unicode="`" horiz-adv-x="1150" d="M104 506q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM410 508l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM532 750q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52z" />
<glyph unicode="a" horiz-adv-x="798" d="M102 692q6 168 115 236q70 45 170 45q133 0 221 -63.5t88 -186.5q0 -68 -43 -129q-20 -25 -92 -80l-45 -33q-41 -29 -51 -61q-6 -18 -6 -45q0 -14 -17 -15h-131q-16 0 -16 15q4 100 27 127q18 20 51 46.5t57 43.5l25 16q25 20 32 35q29 37 29 70q0 47 -27 82 q-25 37 -94 36q-68 0 -96 -45q-29 -47 -29 -94h-168zM310 233q30 27 69 27h6q47 -2 77 -32q28 -28 28 -70q0 -3 -1 -6q-2 -47 -32 -75q-29 -26 -72 -26h-6q-45 2 -75 31q-28 27 -28 70q0 50 34 81z" />
<glyph unicode="b" horiz-adv-x="1150" d="M104 512q0 191 134 328q135 139 329 143h6q191 0 329 -134q140 -136 145 -331v-6q0 -191 -135 -329q-136 -140 -330 -142h-12q-187 0 -323 133q-143 140 -143 338zM389 616h113v7q0 29 18 55q16 25 53 24q41 0 55.5 -20t14.5 -47q0 -18 -16 -41q-8 -14 -19 -19l-6 -4 l-16.5 -11t-20.5 -15t-21.5 -18.5t-17.5 -18.5q-14 -16 -18 -78v-10h108v4q0 10 5 31q6 16 30 34l29 21q47 39 55 49q27 35 27 82q0 80 -55.5 119t-137.5 39q-61 0 -106 -29q-68 -43 -74 -147v-7zM497 290q0 -25 18 -43q19 -19 50 -22h2q29 0 48.5 18.5t21.5 47.5 q0 68 -70 71h-2q-29 0 -48.5 -19t-19.5 -53z" />
<glyph unicode="c" horiz-adv-x="1189" d="M109 94q-5 9 -5.5 18t5.5 17l454 801q12 18 33 18q23 0 31 -18l454 -801q5 -8 5 -17t-5 -18q-10 -16 -30 -16h-912q-20 0 -30 16zM532 180h125v103h-125v-103zM532 360h125v308h-125v-308z" />
<glyph unicode="d" horiz-adv-x="1167" d="M102 512q0 174 122 297t296 123q170 0 292 -120t126 -290h127l-188 -209l-189 209h146q-4 127 -95.5 216t-218.5 89q-131 0 -222 -92t-91 -223t91 -223t222 -92q102 0 187 61l71 -78q-115 -88 -258 -88q-174 0 -296 123t-122 297z" />
<glyph unicode="e" horiz-adv-x="1167" d="M102 522h125q4 170 126 290t292 120q174 0 297 -123t123 -297t-123 -297t-297 -123q-143 0 -258 88l72 78q84 -61 186 -61q131 0 222 92t91 223t-91 223t-222 92q-127 0 -218 -89t-95 -216h145l-188 -209z" />
<glyph unicode="f" d="M102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109 q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" />
<glyph unicode="g" horiz-adv-x="1075" d="M102 635l215 184v-112h553q43 0 73 -30t30 -73v-297q0 -43 -30 -72.5t-73 -29.5h-706v143h665v215h-512v-112z" />
<glyph unicode="h" d="M102 614l195 205l195 -205h-123v-266h227l131 -143h-399q-43 0 -73 29.5t-30 72.5v307h-123zM502 819h399q41 0 72 -29.5t31 -72.5v-307h122l-194 -205l-195 205h123v266h-227z" />
<glyph unicode="i" horiz-adv-x="921" d="M102 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM102 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5zM102 716.5 q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5z" />
<glyph unicode="j" d="M102 307.5q0 20.5 15.5 35.5t36.5 15h307q23 0 37 -15t14 -35.5t-14.5 -36t-36.5 -15.5h-307q-20 0 -36 15.5t-16 36zM102 512q0 20 15.5 35.5t36.5 15.5h307q23 0 37 -15.5t14 -35.5t-14.5 -35.5t-36.5 -15.5h-307q-20 0 -36 15.5t-16 35.5zM102 716.5q0 20.5 15.5 36 t36.5 15.5h307q23 0 37 -15.5t14 -36t-14.5 -35.5t-36.5 -15h-307q-20 0 -36 15t-16 35.5zM621 512q0 51 30 51h168v174q0 31 51.5 31t51.5 -31v-174h174q31 0 30.5 -51t-30.5 -51h-174v-174q0 -31 -51.5 -31t-51.5 31v174h-168q-30 0 -30 51z" />
<glyph unicode="k" horiz-adv-x="819" d="M102 287v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM102 645v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM461 287v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM461 645v92q0 82 82 82h92 q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82z" />
<glyph unicode="l" horiz-adv-x="921" d="M102 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM205 154h512v716h-512v-716zM317 268v88h287v-88h-287zM317 670v90h287v-90h-287zM319 467v92h287v-92h-287z" />
<glyph unicode="m" horiz-adv-x="921" d="M102 154v716q0 41 31 72t72 31h512q43 0 72.5 -31t29.5 -72v-716q0 -43 -29.5 -73t-72.5 -30h-512q-41 0 -72 30t-31 73zM205 154h512v716h-512v-716z" />
<glyph unicode="n" horiz-adv-x="921" d="M102 307v615q0 20 15.5 35.5t36.5 15.5h409q23 0 37 -15.5t14 -35.5v-154h154q23 0 37 -15.5t14 -35.5v-615q0 -20 -14 -35.5t-37 -15.5h-410q-20 0 -35.5 15.5t-15.5 35.5v154h-153q-20 0 -36 15.5t-16 35.5zM205 358h102v359q0 20 14.5 35.5t36.5 15.5h154v102h-307 v-512zM410 154h307v512h-307v-512z" />
<glyph unicode="o" horiz-adv-x="1024" d="M0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
<glyph unicode="p" d="M106 690q-3 8 -2 15q0 9 4 17q7 15 21 19l696 254q10 4 18 4q22 0 31 -28l107 -289h-102l-127 154l-222 -154h-182q-55 0 -93 -39t-38 -94v-164zM309 66v483q0 16 11.5 28.5t27.5 12.5h739q16 0 27.5 -12.5t11.5 -28.5v-483q0 -16 -11 -28.5t-28 -12.5h-739 q-16 0 -27.5 12.5t-11.5 28.5zM418 129h614v164l-74 166l-172 -62l-133 -137l-141 176l-94 -219v-88z" />
<glyph unicode="q" horiz-adv-x="1208" d="M102 195v61h103v102h-103v103h103v102h-103v103h103v102h-103v61q0 16 12.5 28.5t28.5 12.5h922q18 0 29.5 -12t11.5 -29v-61h-102v-102h102v-103h-102v-102h102v-103h-102v-102h102v-61q0 -16 -11.5 -28.5t-29.5 -12.5h-922q-16 0 -28.5 12.5t-12.5 28.5zM492 358 l256 154l-256 154v-308z" />
<glyph unicode="r" horiz-adv-x="921" d="M102 154v716q0 41 31 72t72 31h512q43 0 72.5 -31t29.5 -72v-716q0 -43 -29.5 -73t-72.5 -30h-512q-41 0 -72 30t-31 73zM289 289q10 -33 53 -45q20 -6 40 -6q24 0 48 8q88 27 88 100v266q53 -8 69 -51q9 -24 8 -44q0 -17 -5 -32q-4 -10 2 -10q4 0 12 10q26 35 26 73 q0 11 -2 22q-9 49 -34 80.5t-50.5 67.5t-25.5 54h-61v-376q-19 8 -41 7q-24 0 -49 -10q-45 -16 -68 -49q-15 -21 -15 -42q1 -11 5 -23z" />
<glyph unicode="s" horiz-adv-x="1232" d="M104 614q-2 27 6.5 39.5t41.5 12.5h929q33 0 41 -12.5t6 -39.5l-43 -460q-2 -27 -12 -39.5t-43 -12.5h-827q-33 0 -43 12.5t-13 39.5zM190 737l15 133q4 23 20.5 37.5t36.5 14.5h168q51 0 88 -37l29 -29q37 -37 88 -37h350q20 0 38.5 -12t23.5 -29l10 -41h-867z" />
<glyph unicode="t" horiz-adv-x="1210" d="M103 651q0 7 1 12q2 7 7.5 15t8.5 12t12 13l13 14l31 31v-82h858v82l29 -31q4 -4 14 -13.5t13.5 -13.5t8.5 -12t6 -15.5t1 -19.5t-2 -29q-6 -29 -23.5 -130t-36 -211.5t-20.5 -118.5q-10 -51 -61 -52h-715q-53 0 -62 52q-6 25 -39.5 228.5t-40.5 231.5q-3 28 -3 37z M248 717v51q0 23 13 36t26 15h12h612q6 0 14.5 -1t23 -14t14.5 -36v-51h-715zM350 870q0 23 13.5 36.5t25.5 15.5h12h408q6 0 14 -1t22.5 -14.5t14.5 -36.5h-510zM401 440q0 -51 52 -51h305q23 0 36 12.5t13 24.5l2 14v103h-72v-82h-264v82h-72v-103z" />
<glyph unicode="u" horiz-adv-x="903" d="M104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" />
<glyph unicode="v" horiz-adv-x="1230" d="M104 283q-2 9 -2 18q0 36 35 55l164 111h100l-174 -135h181q10 0 12 -6l43 -115h305l43 115q4 6 12 6h181l-175 135h103l162 -111q35 -20 34 -55q0 -9 -2 -18l-28 -158q-4 -20 -22.5 -33.5t-41.5 -13.5h-835q-51 0 -66 47zM340 688l276 260l277 -260h-154v-252h-245v252 h-154z" />
<glyph unicode="w" horiz-adv-x="1024" d="M0 283q-2 9 -2 18q0 36 35 55l164 109h100l-174 -133h180q8 0 12 -6l43 -115h306l43 115q2 6 12 6h180l-174 133h100l164 -109q35 -20 35 -55q0 -9 -2 -18l-29 -158q-4 -20 -23.5 -34.5t-39.5 -14.5h-836q-20 0 -39.5 14t-25.5 35zM236 694h153v252h246v-252h153 l-276 -260z" />
<glyph unicode="x" horiz-adv-x="1128" d="M104 369q-2 13 -2 26q0 38 19 70l160 385q23 45 75 45h107l-21 -207h-139l262 -217l260 217h-137l-20 207h104q53 0 76 -45l162 -385q17 -33 16 -69q0 -13 -2 -27l-35 -191q-4 -20 -22.5 -35.5t-38.5 -15.5h-727q-20 0 -39 15.5t-23 35.5zM190 326l13 -74 q2 -20 19.5 -35.5t39.5 -15.5h604q23 0 40.5 15t19.5 36l14 74q2 20 -10 35.5t-35 15.5h-662q-20 0 -33.5 -14t-9.5 -37z" />
<glyph unicode="y" d="M102 360q0 76 54.5 129.5t130.5 53.5q4 0 11 -1t11 -1q-4 25 -4 39q0 111 80 188.5t193 77.5q92 0 163.5 -53.5t98.5 -137.5q25 4 41 4q102 0 173.5 -69.5t71.5 -170t-71.5 -170t-173.5 -69.5h-594q-76 0 -130.5 53t-54.5 127z" />
<glyph unicode="z" d="M102 360.5q0 75.5 54.5 128t132.5 52.5h22q-4 25 -4 37q0 111 80 188.5t193 77.5q90 0 162.5 -53.5t99.5 -135.5q12 2 41 2q102 0 172.5 -69.5t70.5 -169.5q0 -98 -71.5 -169t-171.5 -71h-197v195h109l-181 235l-178 -235h107v-195h-254q-78 0 -132.5 53.5t-54.5 129z " />
<glyph unicode="{" horiz-adv-x="716" d="M102 248v528q0 29 16.5 39t41.5 -6l438 -270q16 -12 16 -27l-16 -27l-438 -270q-25 -16 -41.5 -6t-16.5 39z" />
<glyph unicode="|" horiz-adv-x="747" d="M102 219v584q0 68 92.5 67.5t92.5 -67.5v-584q0 -66 -92.5 -66t-92.5 66zM461 219v584q0 68 92 67.5t92 -67.5v-584q0 -66 -92 -66t-92 66z" />
<glyph unicode="}" horiz-adv-x="921" d="M102 512q0 150 104.5 254t254.5 104q147 0 252.5 -104t105.5 -254t-105.5 -254t-252.5 -104q-150 0 -254.5 104t-104.5 254z" />
<glyph unicode="~" horiz-adv-x="819" d="M102 270v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65z" />
<glyph unicode="&#xa9;" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM328 512q0 68 39 106q37 39 98 39q88 0 125 -67l-64 -33q-10 23 -24 29q-16 10 -27 10q-63 0 -63 -84q0 -35 16 -61q16 -23 47 -23q41 0 57 41l60 -29q-16 -31 -53 -55q-35 -20 -72 -20q-59 0 -102 38q-37 39 -37 109zM600 512q0 68 39 106q37 39 98 39q88 0 125 -67 l-63 -33q-10 23 -25 29q-16 10 -26 10q-63 0 -64 -84q0 -39 16.5 -61.5t47.5 -22.5q39 0 57 41l59 -29q-20 -35 -53 -55q-37 -20 -72 -20q-59 0 -102 38q-37 39 -37 109z" />
<glyph unicode="&#xaa;" horiz-adv-x="798" d="M102 692q6 168 115 236q70 45 170 45q133 0 221 -63.5t88 -186.5q0 -68 -43 -129q-20 -25 -92 -80l-45 -33q-41 -29 -51 -61q-6 -18 -6 -45q0 -14 -17 -15h-131q-16 0 -16 15q4 100 27 127q18 20 51 46.5t57 43.5l25 16q25 20 32 35q29 37 29 70q0 47 -27 82 q-25 37 -94 36q-68 0 -96 -45q-29 -47 -29 -94h-168zM310 233q30 27 69 27h6q47 -2 77 -32q28 -28 28 -70q0 -3 -1 -6q-2 -47 -32 -75q-29 -26 -72 -26h-6q-45 2 -75 31q-28 27 -28 70q0 50 34 81z" />
<glyph unicode="&#xad;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
<glyph unicode="&#xae;" horiz-adv-x="1126" d="M102 256v205h308v-256h-267q-41 0 -41 51zM102 563v205q0 51 41 51h267v-256h-308zM512 205v256h512v-205q0 -20 -15.5 -35.5t-35.5 -15.5h-461zM512 563v256h461q20 0 35.5 -15.5t15.5 -35.5v-205h-512z" />
<glyph unicode="&#xb2;" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM362 281q4 27 12.5 68.5t42.5 131.5t77 133q45 45 128 78t144 45l61 11q-4 -27 -11 -69t-41 -132t-79 -133q-45 -45 -128 -78t-144 -45zM524 514q0 -31 20.5 -51.5t50.5 -20.5t50 21q53 53 90 192q-137 -37 -190 -90q-21 -20 -21 -51z" />
<glyph unicode="&#xb3;" horiz-adv-x="1085" d="M102 516q453 254 711 379q23 10 50.5 25.5t38.5 20.5t26.5 9t24 1t16.5 -11t11 -17.5t-1 -23.5t-9 -25.5t-20.5 -40t-25.5 -49.5q-55 -115 -149.5 -293t-160.5 -298l-67 -121l-58 389zM565 553l29 -238l283 525z" />
<glyph unicode="&#xb9;" d="M102 137v600q0 18 17 29l239 152q18 10 35 0l221 -140l224 140q18 10 34 0l240 -152q14 -10 14 -29v-600q0 -20 -16 -31q-8 -4 -16.5 -4t-16.5 4l-223 140l-221 -140q-18 -10 -35 0l-221 140l-223 -140q-16 -10 -33 0q-19 11 -19 31zM170 199l172 108v518l-172 -108v-518 zM410 307l172 -108v518l-172 108v-518zM649 199l172 108v518l-172 -108v-518zM889 307l172 -108v518l-172 108v-518z" />
<glyph unicode="&#xba;" horiz-adv-x="1024" d="M0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
<glyph unicode="&#xc0;" horiz-adv-x="1128" d="M237 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM543 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM665 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11 q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10 t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
<glyph unicode="&#xc2;" horiz-adv-x="1128" d="M174 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM287 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM391 1364zM418 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M897 1872zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10 q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2 q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
<glyph unicode="&#xc3;" horiz-adv-x="1128" d="M362 1212v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38 l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5 q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
<glyph unicode="&#xc4;" horiz-adv-x="1105" d="M102 266v492q0 29 15.5 38t38.5 -5l368 -254q14 -10 15 -25l-15 -25l-368 -254q-23 -14 -38.5 -5t-15.5 38zM553 266v492q0 27 16.5 37t36.5 -4l383 -254q14 -10 15 -25l-15 -25l-383 -254q-20 -14 -36.5 -4t-16.5 37z" />
<glyph unicode="&#xc5;" horiz-adv-x="1105" d="M102 512l15 25l383 254q20 14 36.5 3.5t16.5 -36.5v-492q0 -27 -16.5 -37t-36.5 4l-383 254q-15 11 -15 25zM567 512l15 25l368 254q23 14 38.5 4.5t15.5 -37.5v-492q0 -29 -15.5 -38t-38.5 5l-368 254q-15 11 -15 25z" />
<glyph unicode="&#xc7;" horiz-adv-x="819" d="M102 274v478q0 59 76 59q78 0 78 -59v-478q0 -59 -78 -59q-76 0 -76 59zM281 512l12 23l373 235q23 14 37 5t14 -36v-452q0 -27 -14.5 -36t-36.5 5l-373 233q-12 11 -12 23z" />
<glyph unicode="&#xc8;" horiz-adv-x="1046" d="M202 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM508 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM630 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74 q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" />
<glyph unicode="&#xc9;" horiz-adv-x="819" d="M102 285v454q0 27 14.5 35t35.5 -6l372 -233q12 -10 13 -23l-13 -23l-372 -233q-20 -14 -35 -6t-15 35zM563 274v476q0 59 76 59q78 0 78 -59v-476q0 -59 -78 -59q-76 0 -76 59z" />
<glyph unicode="&#xca;" horiz-adv-x="1046" d="M139 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM252 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM356 1364zM383 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M862 1872zM102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" />
<glyph unicode="&#xcc;" horiz-adv-x="1087" d="M34 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM340 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM462 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49 q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283h-95q-39 -190 -114 -191q-78 0 -117 191h-94z" />
<glyph unicode="&#xce;" horiz-adv-x="1087" d="M-29 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM84 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM188 1364zM215 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM694 1872 zM104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283h-95 q-39 -190 -114 -191q-78 0 -117 191h-94z" />
<glyph unicode="&#xd1;" horiz-adv-x="1024" d="M102 102l23 287l80 -82l143 148l103 -103l-146 -147l80 -80zM573 672l146 147l-80 80l283 23l-21 -287l-80 82l-145 -148z" />
<glyph unicode="&#xd2;" horiz-adv-x="860" d="M-66 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM240 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM362 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20 h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5 t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
<glyph unicode="&#xd4;" horiz-adv-x="860" d="M-129 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM-16 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM88 1364zM115 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M594 1872zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136 q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
<glyph unicode="&#xd5;" horiz-adv-x="860" d="M59 1212v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133 q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
<glyph unicode="&#xd6;" horiz-adv-x="1044" d="M102 197l150 151l-82 82l291 23l-23 -293l-82 82l-149 -150zM586 571l22 293l82 -84l150 152l102 -107l-147 -149l82 -82z" />
<glyph unicode="&#xd9;" horiz-adv-x="921" d="M-48 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM258 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM380 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5 t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92q0 113 -102.5 113t-102.5 -113v-92z" />
<glyph unicode="&#xdb;" horiz-adv-x="921" d="M-111 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM2 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM106 1364zM133 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM612 1872 zM102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92 q0 113 -102.5 113t-102.5 -113v-92z" />
<glyph unicode="&#xdc;" horiz-adv-x="1124" d="M103 266.5q-3 12.5 26 30.5l821 463q29 16 50.5 4t21.5 -45v-383q0 -33 -23.5 -57.5t-58.5 -24.5h-799q-35 0 -38 12.5z" />
<glyph unicode="&#xe0;" horiz-adv-x="1110" d="M102 110.5q0 20.5 17 36.5l801 801q35 35 71 0q16 -14 16.5 -35.5t-16.5 -35.5l-801 -801q-14 -14 -34 -15q-23 0 -37 15q-17 14 -17 34.5zM211 340q-41 135 28.5 289.5t135.5 220.5q37 33 108.5 12.5t161.5 -86.5l-53 -53q-39 27 -78 44t-58.5 19t-29.5 -2 q-4 -10 -2 -30.5t19.5 -58.5t43.5 -79zM373 156l284 284q45 -33 90.5 -55.5t69 -25.5t33.5 1q4 10 1 34t-25.5 69t-55.5 90l51 51q76 -94 103.5 -176t-6.5 -119q-25 -25 -76 -57.5t-135 -71.5t-166 -46t-168 22z" />
<glyph unicode="&#xe1;" horiz-adv-x="1136" d="M104.5 303.5q-10.5 104.5 29.5 197.5t80 158.5t69 94.5q43 45 151.5 -4.5t221 -162t161.5 -222t6 -152.5q-29 -29 -94 -69t-159.5 -78.5t-199 -28.5t-180 86t-86 180.5zM332 688q-8 -8 2 -48t50 -104.5t97 -121.5q59 -59 123 -98.5t104 -50.5t48 -1q8 8 -2.5 48 t-50 104.5t-97 122t-122 97.5t-104.5 50t-48 2zM555 824.5q-6 21.5 4 39.5l55 99q10 18 31 23t39 -5t24.5 -30.5t-3.5 -39.5l-56 -98q-16 -27 -45 -27q-14 0 -24 9q-19 8 -25 29.5zM713 717.5q0 21.5 14 36.5l98 98q14 16 35 16t37 -16t16 -36.5t-16 -35.5l-96 -98 q-14 -14 -37 -14t-37 14t-14 35.5zM834.5 573.5q5.5 20.5 23.5 30.5l100 55q43 25 70 -20q23 -45 -20 -70l-99 -55q-12 -6 -24 -6q-33 0 -45 27q-11 18 -5.5 38.5z" />
<glyph unicode="&#xe2;" horiz-adv-x="952" d="M102 512l390 389v-196h358v-386h-358v-196z" />
<glyph unicode="&#xe3;" horiz-adv-x="983" d="M102 498l390 387l389 -387h-197v-361h-385v361h-197z" />
<glyph unicode="&#xe4;" horiz-adv-x="983" d="M102 526h197v359h385v-359h197l-389 -389z" />
<glyph unicode="&#xe5;" horiz-adv-x="952" d="M102 317v388h359v196l389 -389l-389 -389v194h-359z" />
<glyph unicode="&#xe7;" horiz-adv-x="952" d="M102 512l390 338v-197h358v-282h-358v-197z" />
<glyph unicode="&#xe8;" horiz-adv-x="880" d="M102 498l338 387l338 -387h-196v-361h-285v361h-195z" />
<glyph unicode="&#xe9;" horiz-adv-x="880" d="M102 526h195v359h285v-359h196l-338 -389z" />
<glyph unicode="&#xea;" horiz-adv-x="952" d="M102 369v284h359l2 197l387 -338l-389 -338l2 195h-361z" />
<glyph unicode="&#xeb;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM365 512l196 207v-115h209 v-184h-209v-115z" />
<glyph unicode="&#xec;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM365 524l208 195l207 -195 h-114v-209h-185v209h-116z" />
<glyph unicode="&#xed;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 108.5 -260.5t260 -108.5t260 108.5t108.5 260.5q0 154 -108.5 261.5t-260 107.5t-260 -107.5t-108.5 -261.5zM367 500h114v211h185v-211h114 l-207 -195z" />
<glyph unicode="&#xee;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM375 420v184h211v115 l194 -207l-194 -207v115h-211z" />
<glyph unicode="&#xef;" horiz-adv-x="1128" d="M104.5 468q-6.5 11 10.5 28l411 411q14 16 37 16.5t39 -16.5l412 -411q16 -16 10 -27.5t-29 -11.5h-86v-316q0 -14 -1 -21t-8 -13.5t-21 -6.5h-209v316h-209v-316h-201q-18 0 -28.5 6.5t-11.5 13.5t-1 21v316h-86q-22 0 -28.5 11z" />
<glyph unicode="&#xf1;" horiz-adv-x="573" d="M102 51v871q0 51 41 51h277q23 0 37 -15.5t14 -35.5v-871l-184 185z" />
<glyph unicode="&#xf2;" horiz-adv-x="1024" d="M102 205v307h103v-307h307v-103h-307q-43 0 -73 30t-30 73zM307 410v409q0 43 30 73t71 30h411q41 0 72 -31t31 -72v-409q0 -43 -31 -73t-72 -30h-409q-43 0 -73 30t-30 73zM410 410h409v409h-409v-409z" />
<glyph unicode="&#xf3;" horiz-adv-x="1126" d="M102 266v656q0 25 23 43q25 14 49 4l389 -156l391 156q25 10 50 -4q20 -16 20 -43v-656q0 -33 -31 -47l-409 -164q-8 -2 -11 -4h-10h-8l-10 4l-410 164q-33 14 -33 47zM184 287l328 -131v573l-328 131v-573zM246 408v69l207 -82v-69zM246 621v69l207 -82v-69zM614 156 l328 131v573l-328 -131v-573zM676 326v69l207 82v-69zM676 539v69l207 82v-69z" />
<glyph unicode="&#xf4;" horiz-adv-x="1013" d="M102 600q0 131 93.5 223t224.5 92t228 -97t97 -228q0 -90 -45 -164l193 -195q35 -35 6 -61l-47 -49q-33 -33 -70 0l-194 194q-76 -43 -160 -43q-131 0 -228.5 98.5t-97.5 229.5zM201 600q0 -90 68.5 -159.5t158.5 -69.5q92 0 156.5 64.5t64.5 154.5t-69.5 159.5 t-159.5 69.5t-154.5 -64.5t-64.5 -154.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="1024" d="M141 1058v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
<glyph unicode="&#xf6;" horiz-adv-x="1146" d="M102 512q0 47 33 80t80 33t80 -34t33 -79t-33 -79t-80 -34t-80 33t-33 80zM461 512q0 47 32.5 80t79.5 33q45 0 79 -34t34 -79t-34 -79t-79 -34q-47 0 -79.5 33t-32.5 80zM819 512q0 47 33 80t80 33t79.5 -34t32.5 -79t-32.5 -79t-79.5 -34t-80 33t-33 80z" />
<glyph unicode="&#xf9;" horiz-adv-x="903" d="M-43 1520q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM263 1522l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM385 1764q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5 t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" />
<glyph unicode="&#xfb;" horiz-adv-x="903" d="M-107 1526q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM6 1526q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM110 1272zM137 1247q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM616 1780 zM104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" />
<glyph unicode="&#x152;" horiz-adv-x="1906" d="M962 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5 t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5 q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
<glyph unicode="&#x153;" horiz-adv-x="2191" d="M1126 522h125q4 170 126 290t292 120q174 0 297 -123t123 -297t-123 -297t-297 -123q-143 0 -258 88l72 78q84 -61 186 -61q131 0 222 92t91 223t-91 223t-222 92q-127 0 -218 -89t-95 -216h145l-188 -209zM0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5 t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM215 512q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM319 258zM346 233q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM825 766z " />
<glyph unicode="&#x2dc;" horiz-adv-x="1024" d="M-371 188v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65z" />
<glyph unicode="&#x2000;" horiz-adv-x="1044" />
<glyph unicode="&#x2001;" horiz-adv-x="2088" />
<glyph unicode="&#x2002;" horiz-adv-x="1044" />
<glyph unicode="&#x2003;" horiz-adv-x="2088" />
<glyph unicode="&#x2004;" horiz-adv-x="696" />
<glyph unicode="&#x2005;" horiz-adv-x="522" />
<glyph unicode="&#x2006;" horiz-adv-x="348" />
<glyph unicode="&#x2007;" horiz-adv-x="348" />
<glyph unicode="&#x2008;" horiz-adv-x="260" />
<glyph unicode="&#x2009;" horiz-adv-x="417" />
<glyph unicode="&#x200a;" horiz-adv-x="114" />
<glyph unicode="&#x2010;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
<glyph unicode="&#x2011;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
<glyph unicode="&#x2012;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M102 51v922h820v-922h-820z" />
<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M102 51v922h1844v-922h-1844z" />
<glyph unicode="&#x2018;" horiz-adv-x="1150" d="M104 506q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM410 508l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM532 750q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52z" />
<glyph unicode="&#x2019;" horiz-adv-x="1165" d="M104 252q-2 98 84 197q37 35 236 234.5t272 270.5q82 82 181 56q45 -12 79.5 -47t47.5 -82q27 -98 -54 -179l-485 -485q-43 -45 -90 -47q-49 -6 -82 27q-31 25 -28 76t46 96l342 340q27 27 49 0q27 -25 0 -52l-340 -340q-45 -45 -20 -69q8 -8 25 -8q20 2 47 26l485 486 q51 53 35 110q-14 61 -78 78q-57 16 -108 -35l-508 -508q-66 -76 -64 -144.5t53 -119.5q49 -51 119 -53t146 63l505 508q25 25 51.5 0.5t0.5 -51.5l-508 -508q-84 -84 -189 -84q-102 0 -176 74q-72 72 -74 170z" />
<glyph unicode="&#x201c;" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" />
<glyph unicode="&#x201d;" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" />
<glyph unicode="&#x2026;" horiz-adv-x="3686" d="M2560 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM2663 205h819v614h-819v-614zM2765 311v92h256v-92h-256zM2765 465v92h256v-92h-256zM2765 618v93h256v-93h-256zM3124 311q0 72 4 72q88 25 88 68 q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256zM1331 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM1434 205h819v614 h-819v-614zM1536 311v92h256v-92h-256zM1536 465v92h256v-92h-256zM1536 618v93h256v-93h-256zM1895 311q0 72 4 72q88 25 88 68q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256zM102 205v614 q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM205 205h819v614h-819v-614zM307 311v92h256v-92h-256zM307 465v92h256v-92h-256zM307 618v93h256v-93h-256zM666 311q0 72 4 72q88 25 88 68q0 16 -29 57t-29 90 q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256z" />
<glyph unicode="&#x202f;" horiz-adv-x="417" />
<glyph unicode="&#x2039;" horiz-adv-x="1208" d="M102 393v180q0 23 17.5 42.5t38.5 19.5h891q20 0 38.5 -19.5t18.5 -42.5v-180q0 -20 -18.5 -40.5t-38.5 -20.5h-101l45 -256h-778l45 256h-102q-20 0 -38 20.5t-18 40.5zM146.5 716q3.5 9 11.5 11q23 10 104.5 38t99.5 28h48v153h389v-153h45q18 0 100 -28t105 -38 q8 -2 11 -11t-3 -17.5t-19 -8.5h-870q-12 0 -18.5 8.5t-3 17.5zM317 178h574l-72 334h-430z" />
<glyph unicode="&#x203a;" horiz-adv-x="1024" d="M102 295q0 78 58 135l153 152q72 72 147 81t130 -47q16 -14 16 -34.5t-16 -36.5q-14 -16 -36 -16.5t-36 16.5q-49 49 -133 -35l-154 -152q-27 -27 -26 -63q0 -35 26 -66q27 -27 66 -26.5t65 26.5l41 43q37 33 72 -2q16 -14 16.5 -35.5t-16.5 -35.5l-41 -41 q-57 -55 -137 -55.5t-137 55.5q-58 57 -58 137zM436 401q-35 37 0 72q14 14 35 14t37 -14q49 -49 123 25l164 161q27 27 26 64q0 35 -26 65q-68 61 -121 9l-51 -52q-37 -33 -72 3q-14 14 -14 34.5t14 36.5l51 51q55 53 130 50.5t134 -60.5q55 -55 56 -137q0 -80 -56 -135 l-164 -162q-76 -76 -153 -76q-64 0 -113 51z" />
<glyph unicode="&#x205f;" horiz-adv-x="522" />
<glyph unicode="&#x2122;" horiz-adv-x="948" d="M102 500l193 331l123 -69q68 -39 94 -105l213 367l57 -35l-108 -188l63 -39q78 -45 100.5 -121t-18.5 -145q-55 -92 -157 -97q49 -90 -5 -182q-41 -72 -117.5 -90t-154.5 25l-66 38l-108 -190l-59 33l213 366q-68 -10 -138 29zM193 520l65 -39q53 -29 102.5 -15.5t78 63 t14 99.5t-65.5 81l-65 36zM350 244l66 -39q53 -31 102 -17.5t78 62.5t15.5 100t-64.5 80l-66 39q0 -2 -2 -6zM512 520l66 -37q53 -29 102 -15.5t77.5 63t15.5 99.5t-64 79l-66 39l-129 -222q0 -4 -2 -6z" />
<glyph unicode="&#xe000;" horiz-adv-x="895" d="M0 895h895v-895h-895v895z" />
<glyph unicode="&#xfb01;" horiz-adv-x="2150" d="M1331 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM1331 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5z M1331 716.5q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118z" />
<glyph unicode="&#xfb02;" horiz-adv-x="2150" d="M1331 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM1434 154h512v716h-512v-716zM1546 268v88h287v-88h-287zM1546 670v90h287v-90h-287zM1548 467v92h287v-92h-287zM102 205v143h109q55 0 107.5 33 t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32 q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" />
<glyph unicode="&#xfb03;" horiz-adv-x="3379" d="M2560 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM2560 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5z M2560 716.5q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5zM1331 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM1331 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM1837 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109 q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" />
<glyph unicode="&#xfb04;" horiz-adv-x="3379" d="M2560 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM2663 154h512v716h-512v-716zM2775 268v88h287v-88h-287zM2775 670v90h287v-90h-287zM2777 467v92h287v-92h-287zM1331 205v143h109q55 0 107.5 33 t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM1331 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32 q-80 80 -170 80h-109zM1837 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

+66 -112
View File
@@ -544,34 +544,33 @@ instance.web.Menu = instance.web.Widget.extend({
this._super.apply(this, arguments);
this.has_been_loaded = $.Deferred();
this.maximum_visible_links = 'auto'; // # of menu to show. 0 = do not crop, 'auto' = algo
this.data = {data:{children:[]}};
},
start: function() {
this._super.apply(this, arguments);
this.$secondary_menus = this.getParent().$element.find('.oe_secondary_menus_container');
this.$secondary_menus.on('click', 'a[data-menu]', this.on_menu_click);
$('html').bind('click', this.do_hide_more);
return this.do_reload();
},
do_reload: function() {
var self = this;
return this.rpc("/web/menu/load", {}, this.on_loaded).then(function () {
if (self.current_menu) {
self.open_menu(self.current_menu);
}
});
return this.rpc("/web/menu/load", {}).then(this.on_loaded);
},
on_loaded: function(data) {
var self = this;
this.data = data;
this.renderElement();
this.limit_entries();
this.$element.on('click', 'a[data-menu]', this.on_menu_click);
this.$secondary_menus.html(QWeb.render("Menu.secondary", { widget : this }));
this.$element.on('click', 'a.oe_menu_more_link', function() {
self.$element.find('.oe_menu_more').toggle();
return false;
});
this.$secondary_menus.html(QWeb.render("Menu.secondary", { widget : this }));
this.$element.on('click', 'a[data-menu]', this.on_menu_click);
this.$secondary_menus.on('click', 'a[data-menu]', this.on_menu_click);
// Hide second level submenus
this.$secondary_menus.find('.oe_menu_toggler').siblings('.oe_secondary_submenu').hide();
if (self.current_menu) {
self.open_menu(self.current_menu);
}
this.has_been_loaded.resolve();
},
limit_entries: function() {
@@ -585,6 +584,7 @@ instance.web.Menu = instance.web.Widget.extend({
$index.after($more);
$more.find('.oe_menu_more').append($index.next().nextAll());
}
this.do_hide_more();
},
auto_limit_entries: function() {
// TODO: auto detect overflow and bind window on resize
@@ -603,6 +603,7 @@ instance.web.Menu = instance.web.Widget.extend({
open_menu: function (id) {
var $clicked_menu, $sub_menu, $main_menu;
$clicked_menu = this.$element.add(this.$secondary_menus).find('a[data-menu=' + id + ']');
this.trigger('open_menu', id, $clicked_menu);
if (this.$secondary_menus.has($clicked_menu).length) {
$sub_menu = $clicked_menu.parents('.oe_secondary_menu');
@@ -620,6 +621,9 @@ instance.web.Menu = instance.web.Widget.extend({
this.$secondary_menus.find('.oe_secondary_menu').hide();
$sub_menu.show();
// Hide/Show the leftbar menu depending of the presence of sub-items
this.$secondary_menus.parent('.oe_leftbar').toggle(!!$sub_menu.children().length);
// Activate current menu item and show parents
this.$secondary_menus.find('.oe_active').removeClass('oe_active');
if ($main_menu !== $clicked_menu) {
@@ -631,56 +635,60 @@ instance.web.Menu = instance.web.Widget.extend({
}
}
},
/**
* Call open_menu with the first menu_item matching an action_id
*
* @param {Number} id the action_id to match
*/
open_action: function (id) {
var menu_id, $menu = this.$element.add(this.$secondary_menus).find('a[data-action-id=' + id + ']');
if (menu_id = $menu.data('menu')) {
this.open_menu(menu_id);
}
},
on_menu_click: function(ev, id) {
// TODO If first level menu doesnt have action trigger first leaf
this.do_hide_more();
id = id || 0;
var $clicked_menu, manual = false;
/**
* Process a click on a menu item
*
* @param {Number} id the menu_id
*/
menu_click: function(id) {
if (id) {
// We can manually activate a menu with it's id (for hash url mapping)
manual = true;
$clicked_menu = this.$element.find('a[data-menu=' + id + ']');
if (!$clicked_menu.length) {
$clicked_menu = this.$secondary_menus.find('a[data-menu=' + id + ']');
this.do_hide_more();
// find back the menuitem in dom to get the action
var $item = this.$element.find('a[data-menu=' + id + ']');
if (!$item.length) {
$item = this.$secondary_menus.find('a[data-menu=' + id + ']');
}
var action_id = $item.data('action-id');
// If first level menu doesnt have action trigger first leaf
if (!action_id) {
if(this.$element.has($item).length) {
$sub_menu = this.$secondary_menus.find('.oe_secondary_menu[data-menu-parent=' + id + ']');
$items = $sub_menu.find('a[data-action-id]').filter('[data-action-id!=""]');
if($items.length) {
action_id = $items.data('action-id');
id = $items.data('menu');
}
}
}
} else {
$clicked_menu = $(ev.currentTarget);
id = $clicked_menu.data('menu');
}
this.trigger('menuClicked', id, $clicked_menu);
if (id) {
this.open_menu(id);
this.current_menu = id;
this.session.active_id = id;
var action_id = $clicked_menu.data('action-id');
if (action_id) {
this.on_action(action_id);
this.trigger('menu_click', action_id, id, $item);
}
}
if (ev) {
ev.stopPropagation();
}
},
/**
* Jquery event handler for menu click
*
* @param {Event} ev the jquery event
*/
on_menu_click: function(ev) {
this.menu_click($(ev.currentTarget).data('menu'));
ev.stopPropagation();
return false;
},
do_show_secondary: function($sub_menu, $main_menu) {
var self = this;
this.$secondary_menus.show();
if (!arguments.length) {
return;
}
$sub_menu.show();
},
on_action: function(action) {
}
});
instance.web.UserMenu = instance.web.Widget.extend({
@@ -712,7 +720,7 @@ instance.web.UserMenu = instance.web.Widget.extend({
title: _t("Change Password"),
width : 'auto'
}).open();
this.dialog.$element.html(QWeb.render("Change_Pwd", self));
this.dialog.$element.html(QWeb.render("UserMenu.password", self));
this.dialog.$element.find("form[name=change_password_form]").validate({
submitHandler: function (form) {
self.rpc("/web/session/change_password",{
@@ -746,64 +754,20 @@ instance.web.UserMenu = instance.web.Widget.extend({
return;
var func = new instance.web.Model("res.users").get_func("read");
return func(self.session.uid, ["name", "company_id"]).pipe(function(res) {
// TODO: Show company if multicompany is in use
var topbar_name = _.str.sprintf("%s (%s)", res.name, instance.connection.db, res.company_id[1]);
var topbar_name = res.name;
if(instance.connection.debug)
topbar_name = _.str.sprintf("%s (%s)", topbar_name, instance.connection.db);
if(res.company_id[0] > 1)
topbar_name = _.str.sprintf("%s (%s)", topbar_name, res.company_id[1]);
self.$element.find('.oe_topbar_name').text(topbar_name);
var avatar_src = _.str.sprintf('%s/web/binary/image?session_id=%s&model=res.users&field=avatar&id=%s', self.session.prefix, self.session.session_id, self.session.uid);
$avatar.attr('src', avatar_src);
return self.shortcut_load();
});
};
this.update_promise = this.update_promise.pipe(fct, fct);
},
on_action: function() {
},
shortcut_load :function(){
var self = this,
sc = self.session.shortcuts,
shortcuts_ds = new instance.web.DataSet(this, 'ir.ui.view_sc');
self.$element.find('.oe_dropdown_options a[data-menu=shortcut]').each(function() {
$(this).parent().remove();
});
// TODO: better way to communicate between sections.
// sc.bindings, because jquery does not bind/trigger on arrays...
if (!sc.binding) {
sc.binding = {};
$(sc.binding).bind({
'add': function (e, attrs) {
shortcuts_ds.create(attrs, function (out) {
var shortcut = QWeb.render('UserMenu.shortcut', {
shortcuts : [{
name : attrs.name,
id : out.result,
res_id : attrs.res_id
}]
});
$(shortcut).appendTo(self.$element.find('.oe_dropdown_options'));
attrs.id = out.result;
sc.push(attrs);
});
},
'remove-current': function () {
var menu_id = self.session.active_id;
var $shortcut = self.$element.find('.oe_dropdown_options li a[data-id=' + menu_id + ']');
var shortcut_id = $shortcut.data('shortcut-id');
$shortcut.remove();
shortcuts_ds.unlink([shortcut_id]);
var sc_new = _.reject(sc, function(shortcut){ return shortcut_id === shortcut.id});
sc.splice(0, sc.length);
sc.push.apply(sc, sc_new);
}
});
}
return this.rpc('/web/session/sc_list', {}, function(shortcuts) {
sc.splice(0, sc.length);
sc.push.apply(sc, shortcuts);
$(QWeb.render('UserMenu.shortcut', {'shortcuts': shortcuts}))
.appendTo(self.$element.find('.oe_dropdown_options'));
});
},
on_menu_logout: function() {
},
on_menu_settings: function() {
@@ -830,8 +794,8 @@ instance.web.UserMenu = instance.web.Widget.extend({
title: _t("Preferences"),
width: '700px',
buttons: [
{text: _t("Cancel"), click: function(){ $(this).dialog('destroy'); }},
{text: _t("Change password"), click: function(){ self.change_password(); }},
{text: _t("Cancel"), click: function(){ $(this).dialog('destroy'); }},
{text: _t("Save"), click: function(){
var inner_viewmanager = action_manager.inner_viewmanager;
inner_viewmanager.views[inner_viewmanager.active_view].controller.do_save()
@@ -850,7 +814,7 @@ instance.web.UserMenu = instance.web.Widget.extend({
on_menu_about: function() {
var self = this;
self.rpc("/web/webclient/version_info", {}).then(function(res) {
var $help = $(QWeb.render("About-Page", {version_info: res}));
var $help = $(QWeb.render("UserMenu.about", {version_info: res}));
$help.find('a.oe_activate_debug_mode').click(function (e) {
e.preventDefault();
window.location = $.param.querystring(
@@ -860,16 +824,6 @@ instance.web.UserMenu = instance.web.Widget.extend({
modal: true, width: 960, title: _t("About")});
});
},
on_menu_shortcut: function($link) {
var self = this,
id = $link.data('id');
self.session.active_id = id;
self.rpc('/web/menu/action', {'menu_id': id}, function(ir_menu_data) {
if (ir_menu_data.action.length){
self.on_action(ir_menu_data.action[0][2]);
}
});
}
});
instance.web.WebClient = instance.web.Widget.extend({
@@ -897,8 +851,6 @@ instance.web.WebClient = instance.web.Widget.extend({
this.session.on_session_valid.add(function() {
self.show_application();
self.user_menu.do_update();
self.menu.do_reload();
if(self.action_manager)
self.action_manager.destroy();
self.action_manager = new instance.web.ActionManager(self);
@@ -929,11 +881,12 @@ instance.web.WebClient = instance.web.Widget.extend({
self.$element.append(self.$table);
self.menu = new instance.web.Menu(self);
self.menu.replace(this.$element.find('.oe_menu_placeholder'));
self.menu.on_action.add(this.proxy('on_menu_action'));
self.menu.on('menu_click', this, this.on_menu_action);
self.user_menu = new instance.web.UserMenu(self);
self.user_menu.replace(this.$element.find('.oe_user_menu_placeholder'));
self.user_menu.on_menu_logout.add(this.proxy('on_logout'));
self.user_menu.on_action.add(this.proxy('on_menu_action'));
self.user_menu.do_update();
},
show_common: function() {
var self = this;
@@ -994,8 +947,9 @@ instance.web.WebClient = instance.web.Widget.extend({
} else {
self.menu.has_been_loaded.then(function() {
var first_menu_id = self.menu.$element.find("a:first").data("menu");
if(first_menu_id)
self.menu.on_menu_click(null,first_menu_id);
if(first_menu_id) {
self.menu.menu_click(first_menu_id);
}
});
}
},
@@ -1019,7 +973,7 @@ instance.web.WebClient = instance.web.Widget.extend({
// TODO replace by client action menuclick
if(action.menu_id) {
this.do_reload().then(function () {
self.menu.on_menu_click(null, action.menu_id);
self.menu.menu_click(action.menu_id);
});
}
},
-1
View File
@@ -69,7 +69,6 @@ instance.web.Session = instance.web.JsonRPC.extend( /** @lends instance.web.Sess
self.module_loaded[mod] = true;
});
this.context = {};
this.shortcuts = [];
this.active_id = null;
return this.session_init();
},
+3 -3
View File
@@ -98,7 +98,7 @@ instance.web.ViewEditor = instance.web.OldWidget.extend({
var view_widget = [{'name': 'view_name', 'string':'View Name', 'type': 'char', 'required': true, 'value' : this.model + '.custom_' + Math.round(Math.random() * 1000)},
{'name': 'view_type', 'string': 'View Type', 'type': 'selection', 'required': true, 'value': 'Form', 'selection': [['',''],['tree', 'Tree'],['form', 'Form'],['graph', 'Graph'],['calendar', 'Calender']]},
{'name': 'proirity', 'string': 'Priority', 'type': 'float', 'required': true, 'value':'16'}];
this.create_view_dialog.$element.append('<table id="create_view" style="width:400px" class="oe_forms"></table>');
this.create_view_dialog.$element.append('<table id="create_view" style="width:400px" class="oe_form"></table>');
this.create_view_widget = [];
_.each(view_widget, function(widget) {
var type_widget = new (self.property.get_any([widget.type])) (self.create_view_dialog, widget);
@@ -877,7 +877,7 @@ instance.web.ViewEditor = instance.web.OldWidget.extend({
'fonts' : {'name':'fonts', 'string': 'fonts', 'type': 'char'},
};
var arch_val = self.get_object_by_id(this.one_object.clicked_tr_id,this.one_object['main_object'], []);
this.edit_node_dialog.$element.append('<table id="rec_table" style="width:400px" class="oe_forms"></table>');
this.edit_node_dialog.$element.append('<table id="rec_table" style="width:400px" class="oe_form"></table>');
this.edit_widget = [];
self.ready = $.when(self.on_groups(properties)).then(function () {
_PROPERTIES_ATTRIBUTES['groups']['selection'] = self.groups;
@@ -963,7 +963,7 @@ instance.web.ViewEditor = instance.web.OldWidget.extend({
{text: _t("Cancel"), click: function() { self.add_node_dialog.close(); }}
]
}).open();
this.add_node_dialog.$element.append('<table id="rec_table" style="width:420px" class="oe_forms"><tbody><tr></tbody></table>');
this.add_node_dialog.$element.append('<table id="rec_table" style="width:420px" class="oe_form"><tbody><tr></tbody></table>');
var table_selector = self.add_node_dialog.$element.find('table[id=rec_table] tbody');
_.each(render_list, function(node) {
type_widget = new (self.property.get_any([node.type])) (self.add_node_dialog, node);
+19 -13
View File
@@ -106,7 +106,6 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
this.rendering_engine.render_to($dest);
}
this.$sidebar = this.options.$sidebar || this.$element.find('.oe_form_sidebar');
this.$buttons = $(QWeb.render("FormView.buttons", {'widget':self}));
if (this.options.$buttons) {
@@ -116,8 +115,6 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
}
this.$buttons.on('click','.oe_form_button_create',this.on_button_create);
this.$buttons.on('click','.oe_form_button_edit',this.on_button_edit);
this.$buttons.on('click','.oe_form_button_duplicate',this.on_button_duplicate);
this.$buttons.on('click','.oe_form_button_delete',this.on_button_delete);
this.$buttons.on('click','.oe_form_button_save',this.on_button_save);
this.$buttons.on('click','.oe_form_button_cancel',this.on_button_cancel);
@@ -132,19 +129,18 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
self.on_pager_action(action);
});
this.$sidebar = this.options.$sidebar || this.$element.find('.oe_form_sidebar');
if (!this.sidebar && this.options.$sidebar) {
this.sidebar = new instance.web.Sidebar(this);
this.sidebar.appendTo(this.$sidebar);
if(this.fields_view.toolbar) {
this.sidebar.add_toolbar(this.fields_view.toolbar);
}
this.sidebar.add_items('other', [{
label: _t('Set Default'),
form: this,
callback: function (item) {
item.form.open_defaults_dialog();
}
}]);
this.sidebar.add_items('other', [
{ label: _t('Delete'), callback: self.on_button_delete },
{ label: _t('Duplicate'), callback: self.on_button_duplicate },
{ label: _t('Set Default'), callback: function (item) { self.open_defaults_dialog(); } },
]);
}
this.on("change:mode", this, this.switch_mode);
this.set({mode: this.options.initial_mode});
@@ -527,12 +523,14 @@ instance.web.FormView = instance.web.View.extend(_.extend({}, instance.web.form.
if(this.get("mode") == "view") {
self.$buttons.find('.oe_form_buttons_edit').hide();
self.$buttons.find('.oe_form_buttons_view').show();
self.$sidebar.show();
_.each(this.fields,function(field){
field.set({"force_readonly": true});
});
} else {
self.$buttons.find('.oe_form_buttons_edit').show();
self.$buttons.find('.oe_form_buttons_view').hide();
self.$sidebar.hide();
_.each(this.fields,function(field){
field.set({"force_readonly": false});
});
@@ -1158,6 +1156,9 @@ instance.web.form.FormRenderingEngine = instance.web.form.FormRenderingEngineInt
if (width.substr(-1) === '%') {
total -= iwidth;
width = iwidth + '%';
} else {
// Absolute width
$td.css('min-width', width + 'px');
}
$td.attr('width', width);
$child.removeAttr('width');
@@ -1715,6 +1716,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(_.extend({
});
},
renderElement: function() {
var self = this;
this._super();
if (this.field.translate) {
this.$element.addClass('oe_form_field_translatable');
@@ -1722,8 +1724,14 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(_.extend({
this.field_manager.open_translate_dialog(this);
}, this));
}
this.$label = this.view.$element.find('label[for=' + this.id_for_label + ']');
if (instance.connection.debug) {
this.do_attach_tooltip(this, this.view.$element.find('label[for=' + this.id_for_label + ']')[0] || this.$element);
this.do_attach_tooltip(this, this.$label[0] || this.$element);
this.$label.off('dblclick').on('dblclick', function() {
console.log("Field '%s' of type '%s' in View: %o", self.name, (self.node.attrs.widget || self.field.type), self.view);
window.w = self;
console.log("window.w =", window.w);
});
}
if (!this.disable_utility_classes) {
this.off("change:required", this, this._set_required);
@@ -2742,7 +2750,6 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
if (self.get("effective_readonly")) {
view.options.addable = null;
view.options.deletable = null;
view.options.isClarkGable = false;
}
} else if (view.view_type === "form") {
if (self.get("effective_readonly")) {
@@ -3266,7 +3273,6 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
'addable': self.get("effective_readonly") ? null : _t("Add"),
'deletable': self.get("effective_readonly") ? false : true,
'selectable': self.multi_selection,
'isClarkGable': self.get("effective_readonly") ? false : true
});
var embedded = (this.field.views || {}).tree;
if (embedded) {
+39 -33
View File
@@ -10,7 +10,7 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
// records can be selected one by one
'selectable': true,
// list rows can be deleted
'deletable': true,
'deletable': false,
// whether the column headers should be displayed
'header': true,
// display addition button, with that label
@@ -20,8 +20,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
'sortable': true,
// whether the view rows can be reordered (via vertical drag & drop)
'reorderable': true,
// display an edit icon linking to form view
'isClarkGable': true
},
/**
* Core class for list-type displays.
@@ -256,16 +254,17 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
e.stopPropagation();
var $this = $(this);
self.dataset.sort($this.data('id'));
if ($this.find('span').length) {
$this.find('span').toggleClass( 'ui-icon-triangle-1-s ui-icon-triangle-1-n');
if($this.hasClass("sortdown") || $this.hasClass("sortup")) {
$this.toggleClass("sortdown").toggleClass("sortup");
} else {
$this.append('<span class="ui-icon ui-icon-triangle-1-n">') .siblings('.oe-sortable').find('span').remove();
$this.toggleClass("sortdown");
}
$this.siblings('.oe-sortable').removeClass("sortup sortdown");
self.reload_content();
});
// Add and delete
// Add button and Import link
if (!this.$buttons) {
this.$buttons = $(QWeb.render("ListView.buttons", {'widget':self}));
if (this.options.$buttons) {
@@ -275,11 +274,11 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
}
this.$buttons.find('.oe_list_add')
.click(this.proxy('do_add_record'))
.prop('disabled', grouped && this.options.editable)
.end()
.find('.oe_list_delete')
.click(this.proxy('do_delete_selected'))
.prop('disabled', true);
.prop('disabled', grouped && this.options.editable);
this.$buttons.on('click', '.oe_list_button_import', function() {
self.on_sidebar_import();
return false;
});
}
// Pager
@@ -339,6 +338,9 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
if (!this.sidebar && this.options.$sidebar) {
this.sidebar = new instance.web.Sidebar(this);
this.sidebar.appendTo(this.options.$sidebar);
this.sidebar.add_items('other', [
{ label: _t('Delete'), callback: this.do_delete_selected },
]);
this.sidebar.add_toolbar(this.fields_view.toolbar);
}
},
@@ -356,11 +358,18 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
this.dataset._length = dataset._length;
}
var page = this.page + 1,
total = Math.floor(dataset.size() / this.limit()) + 1;
var total = dataset.size();
var spager = '-';
if (total) {
var range_start = this.page * this.limit() + 1;
var range_stop = range_start - 1 + this.limit();
if (range_stop > total) {
range_stop = total;
}
spager = _.str.sprintf('%d-%d of %d', range_start, range_stop, total);
}
this.$pager.find('.oe-pager-state').text(isNaN(total)
? '-' : _.str.sprintf('%d / %d', page, total));
this.$pager.find('.oe-pager-state').text(spager);
},
/**
* Sets up the listview's columns: merges view and fields data, move
@@ -598,7 +607,6 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
* @param {Array} records selected record values
*/
do_select: function (ids, records) {
this.$buttons.find('.oe_list_delete').attr('disabled', !ids.length);
if (!ids.length) {
this.dataset.index = 0;
if (this.sidebar) {
@@ -669,7 +677,12 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
* Handles deletion of all selected lines
*/
do_delete_selected: function () {
this.do_delete(this.groups.get_selection().ids);
var ids = this.groups.get_selection().ids;
if (ids.length) {
this.do_delete(this.groups.get_selection().ids);
} else {
this.do_warn(_t("Warning"), _t("You must select at least one record."));
}
},
/**
* Computes the aggregates for the current list view, either on the
@@ -807,15 +820,18 @@ instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListVi
}
},
no_result: function () {
this.$element.find('.oe_view_nocontent').remove();
if (this.groups.group_by
|| !this.options.action
|| !this.options.action.help) {
return;
}
this.$element.children('table').replaceWith(
$('<div class="oe_listview_nocontent">')
.append($('<img>', { src: '/web/static/src/img/list_empty_arrow.png' }))
.append($('<div>').html(this.options.action.help)));
this.$element.find('table:first').hide();
this.$element.prepend(
$('<div class="oe_view_nocontent">')
.append($('<img>', { src: '/web/static/src/img/view_empty_arrow.png' }))
.append($('<div>').html(this.options.action.help))
);
}
});
instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.ListView.List# */{
@@ -931,11 +947,7 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
if (!self.dataset.select_id(row_id)) {
throw "Could not find id in dataset"
}
var view;
if ($(e.target).is('.oe-record-edit-link-img')) {
view = 'form';
}
self.row_clicked(e, view);
self.row_clicked(e);
}
});
},
@@ -1010,9 +1022,6 @@ instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.
if (this.options.selectable) {
cells.push('<th class="oe-record-selector"></td>');
}
if (this.options.isClarkGable) {
cells.push('<th class="oe-record-edit-link"></td>');
}
_(this.columns).each(function(column) {
if (column.invisible === '1') {
return;
@@ -1321,9 +1330,6 @@ instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.we
if (self.options.selectable) {
$row.append('<td>');
}
if (self.options.isClarkGable) {
$row.append('<td>');
}
_(self.columns).chain()
.filter(function (column) {return !column.invisible;})
.each(function (column) {
@@ -70,6 +70,8 @@ openerp.web.list_editable = function (instance) {
*/
do_add_record: function () {
if (this.options.editable) {
this.$element.find('table:first').show();
this.$element.find('.oe_view_nocontent').remove();
this.groups.new_record();
} else {
this._super();
@@ -202,7 +204,7 @@ openerp.web.list_editable = function (instance) {
var $new_row = $('<tr>', {
id: _.uniqueId('oe-editable-row-'),
'data-id': record_id,
'class': row ? $(row).attr('class') : '' + ' oe_forms',
'class': (row ? $(row).attr('class') : '') + ' oe_form',
click: function (e) {e.stopPropagation();}
})
.delegate('button.oe-edit-row-save', 'click', function () {
@@ -398,8 +400,6 @@ openerp.web.list_editable = function (instance) {
if (this.view.editable_list.options.selectable)
$("<td>").appendTo($element);
if (this.view.editable_list.options.isClarkGable)
$("<td>").appendTo($element);
$xml.children().each(function(i, el) {
var modifiers = JSON.parse($(el).attr("modifiers") || "{}");
+17 -69
View File
@@ -237,7 +237,7 @@ instance.web.ViewManager = instance.web.Widget.extend({
var self = this;
this.$element.find('.oe_view_manager_switch a').click(function() {
self.on_mode_switch($(this).data('view-type'));
});
}).tipsy();
var views_ids = {};
_.each(this.views_src, function(view) {
self.views[view.view_type] = $.extend({}, view, {
@@ -636,8 +636,6 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
var self = this;
return $.when(this._super(view_type, no_store)).then(function () {
self.shortcut_check(self.views[view_type]);
var controller = self.views[self.active_view].controller,
fvg = controller.fields_view,
view_id = (fvg && fvg.view_id) || '--';
@@ -649,15 +647,6 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
self.$element.find('.oe_view_title_text').text(fvg.arch.attrs.string || fvg.name);
}
var $title = self.$element.find('.oe_view_title_text'),
$search_prefix = $title.find('span.oe_searchable_view');
if (controller.searchable !== false && self.flags.search_view !== false) {
if (!$search_prefix.length) {
$title.prepend('<span class="oe_searchable_view">' + _t("Search: ") + '</span>');
}
} else {
$search_prefix.remove();
}
});
},
do_push_state: function(state) {
@@ -681,44 +670,6 @@ instance.web.ViewManagerAction = instance.web.ViewManager.extend({
self.views[self.active_view].controller.do_load_state(state, warm);
});
},
shortcut_check : function(view) {
var self = this;
var grandparent = this.getParent() && this.getParent().getParent();
// display shortcuts if on the first view for the action
var $shortcut_toggle = this.$element.find('.oe-shortcut-toggle');
if (!this.action.name ||
!(view.view_type === this.views_src[0].view_type
&& view.view_id === this.views_src[0].view_id)) {
$shortcut_toggle.hide();
return;
}
$shortcut_toggle.removeClass('oe-shortcut-remove').show();
if (_(this.session.shortcuts).detect(function (shortcut) {
return shortcut.res_id === self.session.active_id; })) {
$shortcut_toggle.addClass("oe-shortcut-remove");
}
this.shortcut_add_remove();
},
shortcut_add_remove: function() {
var self = this;
var $shortcut_toggle = this.$element.find('.oe-shortcut-toggle');
$shortcut_toggle
.unbind("click")
.click(function() {
if ($shortcut_toggle.hasClass("oe-shortcut-remove")) {
$(self.session.shortcuts.binding).trigger('remove-current');
$shortcut_toggle.removeClass("oe-shortcut-remove");
} else {
$(self.session.shortcuts.binding).trigger('add', {
'user_id': self.session.uid,
'res_id': self.session.active_id,
'resource': 'ir.ui.menu',
'name': self.action.name
});
$shortcut_toggle.addClass("oe-shortcut-remove");
}
});
},
display_title: function () {
return this.action.name;
}
@@ -777,25 +728,6 @@ instance.web.Sidebar = instance.web.Widget.extend({
self.$element.html(QWeb.render('Sidebar', {widget: self}));
this.$element.find('ul').hide();
},
add_section: function() {
var self = this;
},
add_toolbar: function(toolbar) {
var self = this;
_.each(['print','action','relate'], function(type) {
var items = toolbar[type];
if (items) {
for (var i = 0; i < items.length; i++) {
items[i] = {
label: items[i]['name'],
action: items[i],
classname: 'oe_sidebar_' + type
}
}
self.add_items(type=='print' ? 'print' : 'other', items);
}
});
},
/**
* For each item added to the section:
*
@@ -828,6 +760,22 @@ instance.web.Sidebar = instance.web.Widget.extend({
this.redraw();
}
},
add_toolbar: function(toolbar) {
var self = this;
_.each(['print','action','relate'], function(type) {
var items = toolbar[type];
if (items) {
for (var i = 0; i < items.length; i++) {
items[i] = {
label: items[i]['name'],
action: items[i],
classname: 'oe_sidebar_' + type
}
}
self.add_items(type=='print' ? 'print' : 'other', items);
}
});
},
on_item_action_clicked: function(item) {
var self = this;
self.getParent().sidebar_context().then(function (context) {
+65 -58
View File
@@ -125,7 +125,7 @@
<li><a href="#db_change_password">Password</a></li>
<li><a id="back_to_login" href="#">Back to Login</a></li>
</ul>
<form id="db_create" name="create_db_form" class="oe_forms" method="POST">
<form id="db_create" name="create_db_form" method="POST">
<table align="center" class="db_option_table">
<tr>
<th colspan="2" class="option_string"> CREATE DATABASE </th>
@@ -165,7 +165,7 @@
</tr>
</table>
</form>
<form id="db_drop" name="drop_db_form" class="oe_forms" method="POST">
<form id="db_drop" name="drop_db_form" method="POST">
<table align="center" class="db_option_table">
<tr>
<th colspan="2" class="option_string"> DROP DATABASE </th>
@@ -190,7 +190,7 @@
</tr>
</table>
</form>
<form id="db_backup" name="backup_db_form" class="oe_forms" method="POST" target="backup-target" action="/web/database/backup">
<form id="db_backup" name="backup_db_form" method="POST" target="backup-target" action="/web/database/backup">
<input type="hidden" name="token"/>
<table align="center" class="db_option_table">
<tr>
@@ -216,7 +216,7 @@
</tr>
</table>
</form>
<form id="db_restore" name="restore_db_form" class="oe_forms" method="POST">
<form id="db_restore" name="restore_db_form" method="POST">
<table align="center" class="db_option_table">
<tr>
<th colspan="2" class="option_string"> RESTORE DATABASE </th>
@@ -238,7 +238,7 @@
</tr>
</table>
</form>
<form id="db_change_password" name="change_pwd_form" class="oe_forms" method="POST">
<form id="db_change_password" name="change_pwd_form" method="POST">
<table align="center" class="db_option_table">
<tr>
<th colspan="2" class="option_string"> CHANGE MASTER PASSWORD </th>
@@ -333,7 +333,7 @@
t-att-data-action-model="menu.action ? menu.action.split(',')[0] : ''"
t-att-data-action-id="menu.action ? menu.action.split(',')[1] : ''">
<t t-esc="menu.name"/>
<t t-if="menu.needaction_enabled">
<t t-if="menu.needaction_enabled and menu.needaction_counter">
<div class="oe_menu_counter">
<t t-esc="menu.needaction_counter"/>
</div>
@@ -349,24 +349,14 @@
<span class="oe_topbar_name"/>
</a>
<ul class="oe_dropdown_options">
<!--<li><a href="#" data-menu="profile">Profile</a></li>-->
<li><a href="#" data-menu="settings">Settings</a></li>
<li><a href="#" data-menu="logout">Log out</a></li>
<li><hr/></li>
<li><a href="#" data-menu="about">About OpenERP</a></li>
<li><hr/></li>
<li><a href="#" data-menu="settings">Preferences</a></li>
<li><a href="#" data-menu="logout">Log out</a></li>
</ul>
</li>
</ul>
</t>
<t t-name="UserMenu.shortcut">
<li t-foreach="shortcuts" t-as="shortcut">
<a href="#" data-menu="shortcut" t-att-data-id="shortcut.res_id" t-att-data-shortcut-id="shortcut.id">
<t t-esc="shortcut.name"/>
</a>
</li>
</t>
<t t-name="About-Page">
<t t-name="UserMenu.about">
<div>
<a class="oe_activate_debug_mode" href="?debug" style="float:right; font-size: 80%;">Activate the developper mode</a>
<h1 style="margin:0;">OpenERP</h1>
@@ -383,8 +373,8 @@
</p>
</div>
</t>
<t t-name="Change_Pwd">
<form name="change_password_form" class="oe_forms" method="POST">
<t t-name="UserMenu.password">
<form name="change_password_form" method="POST">
<table align="center">
<tr>
<td><label for="old_pwd">Old Password:</label></td>
@@ -408,27 +398,56 @@
</form>
</t>
<t t-name="WebClient">
<table class="oe_webclient">
<tr>
<td colspan="2" class="oe_topbar">
<div class="oe_menu_placeholder"/>
<div class="oe_user_menu_placeholder"/>
<div class="oe_systray"/>
</td>
</tr>
<tr>
<td class="oe_leftbar" valign="top">
<a href="#" class="oe_logo"><img t-att-src='_s + "/web/static/src/img/logo.png"'/></a>
<div class="oe_secondary_menus_container"/>
<div class="oe_footer">
Powered by <a href="http://www.openerp.com"><span>Open</span>ERP</a>
</div>
</td>
<td class="oe_application">
</td>
</tr>
</table>
</t>
<t t-name="ViewManager">
<div class="oe_view_manager">
<table class="oe_view_manager_header2">
<table class="oe_view_manager_header">
<col width="33%"/>
<col width="33%"/>
<col width="34%"/>
<tr>
<tr class="oe_header_row">
<td colspan="2">
<h2 class="oe_view_title" t-if="widget.flags.display_title !== false">
<span class="oe_view_title_text"><t t-esc="widget.display_title()"/></span>
</h2>
<h2 class="oe_view_title" t-if="widget.flags.display_title !== false">
<span class="oe_view_title_text"><t t-esc="widget.display_title()"/></span>
</h2>
</td>
<td>
<div class="oe_view_manager_view_search" t-opentag="true"/>
</td>
<td> <div class="oe_view_manager_view_search" t-opentag="true"/> </td>
</tr>
<tr>
<td> <div class="oe_view_manager_buttons"/> </td>
<td> <div class="oe_view_manager_sidebar"/> </td>
<tr class="oe_header_row">
<td>
<div class="oe_view_manager_buttons"/>
</td>
<td>
<div class="oe_view_manager_sidebar"/>
</td>
<td>
<ul class="oe_view_manager_switch oe_button_group oe_right">
<t t-if="widget.views_src.length != 1" t-foreach="widget.views_src" t-as="view">
<li><a t-attf-class="oe_vm_switch_#{view.view_type} oe_i" t-att-data-view-type="view.view_type" t-att-title="view.label || view.view_type">
<t t-if="widget.views_src.length > 2" t-foreach="widget.views_src" t-as="view">
<li t-if="view.view_type != 'form'" class="oe_e"><a t-attf-class="oe_vm_switch_#{view.view_type}" t-att-data-view-type="view.view_type" t-att-title="view.label || view.view_type">
</a></li>
</t>
</ul>
@@ -436,6 +455,8 @@
</td>
</tr>
</table>
<div class="oe_view_manager_body">
<t t-foreach="widget.views_src" t-as="view">
<div t-attf-class="oe_view_manager_view_#{view.view_type}"/>
@@ -443,12 +464,9 @@
</div>
</div>
</t>
<t t-name="ViewManagerAction" t-extend="ViewManager">
<t t-jquery="h2.oe_view_title" t-operation="prepend">
<a t-if="widget.flags.display_title !== false" class="oe-shortcut-toggle" title="Add / Remove Shortcut..."
href="javascript: void(0)"> </a>
</t>
<t t-jquery="h2.oe_view_title" t-operation="after">
<t t-jquery="h2.oe_view_title" t-operation="before">
<select t-if="widget.session.debug" class="oe_debug_view"/>
</t>
</t>
@@ -608,9 +626,9 @@
</tr>
<table t-name="ListView" class="oe-listview-content">
<t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0) + (options.isClarkGable ? 1 : 0)"/>
<t t-set="columns_count" t-value="visible_columns.length + (options.selectable ? 1 : 0) + (options.deletable ? 1 : 0)"/>
<thead>
<tr t-if="options.action_buttons !== false or options.pager !== false">
<tr t-if="(!!options.action_buttons and !options.$buttons) or (!!options.pager and !options.$pager)">
<th t-att-colspan="columns_count">
<div class="oe_list_buttons"/>
<div class="oe_list_sidebar"/>
@@ -626,7 +644,6 @@
<th t-if="options.selectable" width="1" >
<input type="checkbox" class="all-record-selector"/>
</th>
<th t-if="options.isClarkGable" width="1"></th>
<t t-foreach="columns" t-as="column">
<th t-if="!column.meta and column.invisible !== '1'" t-att-data-id="column.id"
t-att-class="((options.sortable and column.tag !== 'button') ? 'oe-sortable' : null)">
@@ -639,7 +656,6 @@
<tfoot>
<tr>
<td t-if="options.selectable"/>
<td t-if="options.isClarkGable"/>
<td t-foreach="aggregate_columns" t-as="column" class="oe-list-footer oe-number"
t-att-data-field="column.id" t-att-title="column.label">
</td>
@@ -649,12 +665,10 @@
</table>
<div t-name="ListView.buttons" class="oe_list_buttons">
<t t-if="!widget.no_leaf and widget.options.action_buttons !== false">
<button type="button" class="oe_button oe_list_add" t-if="widget.options.addable">
<button type="button" class="oe_button oe_list_add oe_form_button_hi" t-if="widget.options.addable">
<t t-esc="widget.options.addable"/>
</button>
<button type="button" class="oe_button oe_list_delete" t-if="widget.options.selectable and widget.options.deletable">
Delete
</button>
<span class="oe_fade">or</span> <a href="#" class="oe_bold oe_list_button_import">Import</a>
</t>
</div>
<t t-name="ListView.pager">
@@ -684,9 +698,6 @@
<input t-if="options.radio" type="radio" name="radiogroup" t-att-checked="checked"/>
<input t-if="!options.radio" type="checkbox" name="radiogroup" t-att-checked="checked"/>
</th>
<th t-if="options.isClarkGable" class="oe-record-edit-link" width="1">
<img src="/web/static/src/img/pencil.gif" width="12" height="12" class="oe-record-edit-link-img"/>
</th>
<t t-foreach="columns" t-as="column">
<t t-set="align" t-value="column.type === 'integer' or column.type == 'float'"/>
<td t-if="!column.meta and column.invisible !== '1'" t-att-title="column.help"
@@ -714,12 +725,9 @@
<span class="oe_form_buttons_view">
<button type="button" class="oe_button oe_form_button_edit">Edit</button>
<button type="button" class="oe_button oe_form_button_create">Create</button>
<button type="button" class="oe_button oe_form_button_duplicate">Duplicate</button>
<button type="button" class="oe_button oe_form_button_delete">Delete</button>
</span>
<span class="oe_form_buttons_edit">
<button type="button" class="oe_button oe_form_button_save">Save</button> or
<a href="#" class="oe_form_button_cancel">Discard</a>
<button type="button" class="oe_button oe_form_button_save">Save</button> <span class="oe_fade">or</span> <a href="#" class="oe_bold oe_form_button_cancel">Discard</a>
</span>
</t>
</div>
@@ -730,7 +738,7 @@
</t>
</div>
</t>
<form t-name="FormView.set_default" class="oe_forms oe_frame">
<form t-name="FormView.set_default">
<t t-set="args" t-value="widget.dialog_options.args"/>
<table style="width: 100%">
<tr>
@@ -839,7 +847,6 @@
t-att-title="help"
t-attf-class="#{classnames} oe_form_label#{help ? '_help' : ''} oe_align_#{align}">
<t t-esc="string"/>
<span t-if="help">?</span>
</label>
</t>
@@ -1034,8 +1041,8 @@
<img t-att-src='_s + "/web/static/src/img/down-arrow.png"' /></span>
</td>
<td width="16">
<button class="oe_button oe_field_button oe-m2o-cm-button">
<img t-att-src='_s + "/web/static/src/img/icons/gtk-go-forward.png"'/>
<button class="oe_button oe_field_button oe-m2o-cm-button" title="Open Resource">
<img t-att-src='_s + "/web/static/src/img/icons/terp-folder-yellow.png"'/>
</button>
</td>
</tr>
@@ -1064,7 +1071,7 @@
</t>
</t>
<t t-name="FieldReference">
<table class="oe_form_field_reference oe_frame oe_forms" border="0" cellpadding="0" cellspacing="0">
<table class="oe_form_field_reference oe_form" border="0" cellpadding="0" cellspacing="0">
<tr>
<td t-attf-class="oe_form_frame_cell oe_form_selection oe_form_view_reference_selection">
</td>
@@ -1338,7 +1345,7 @@
</div>
</t>
<t t-name="SearchView.add_to_dashboard">
<div class="oe_forms">
<div class="oe_form">
<p><b>Select Dashboard to add this filter to:</b></p>
<select style="width: 100%; margin-right: 1em;">
<option t-foreach="dashboards" t-as="menu" t-att-value="menu.id" t-att-selected="(menu.id == selected_menu_id) || undefined"><t t-esc="menu.name"/></option>
@@ -1,5 +1,20 @@
#openerp_scheduler {
.oe_calendar_table {
border-top: 3px solid #eee;
}
.oe_calendar {
background-color:#eee;
height: 600px;
border-right: 1px solid #eee;
}
.oe_calendar_sidebar {
width: 200px;
}
.oe_calendar_mini {
background-color: #eee;
padding: 5px;
}
.oe_calendar_filter {
padding: 0 10px;
}
.openerp .dhx_mini_calendar {
-moz-box-shadow: none;
+5 -14
View File
@@ -8,6 +8,7 @@ var _t = instance.web._t,
var QWeb = instance.web.qweb;
instance.web.views.add('calendar', 'instance.web_calendar.CalendarView');
instance.web_calendar.CalendarView = instance.web.View.extend({
template: "CalendarView",
display_name: _lt('Calendar'),
// Dhtmlx scheduler ?
init: function(parent, dataset, view_id, options) {
@@ -98,13 +99,12 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
for (var fld = 0; fld < this.fields_view.arch.children.length; fld++) {
this.info_fields.push(this.fields_view.arch.children[fld].attrs.name);
}
this.$element.html(QWeb.render("CalendarView", {"fields_view": this.fields_view}));
this.init_scheduler();
if (! this.sidebar && this.options.$sidebar) {
if (!this.sidebar && this.options.$sidebar) {
this.sidebar = new instance.web_calendar.Sidebar(this);
this.has_been_loaded.pipe(this.sidebar.appendTo(this.options.$sidebar));
this.has_been_loaded.pipe(this.sidebar.appendTo(this.$element.find('.oe_calendar_sidebar_container')));
}
return this.has_been_loaded.resolve();
@@ -127,7 +127,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
scheduler.config.mark_now = true;
scheduler.config.day_date = '%l %j';
scheduler.init('openerp_scheduler', null, this.mode || 'month');
scheduler.init(this.$element.find('.oe_calendar')[0], null, this.mode || 'month');
// Remove hard coded style attributes from dhtmlx scheduler
this.$element.find(".dhx_cal_navline div").removeAttr('style');
@@ -143,7 +143,7 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
this.refresh_scheduler();
},
on_view_changed: function(mode, date) {
this.$element.removeClass('oe_cal_day oe_cal_week oe_cal_month').addClass('oe_cal_' + mode);
this.$element.find('.oe_calendar').removeClass('oe_cal_day oe_cal_week oe_cal_month').addClass('oe_cal_' + mode);
if (!date.between(this.range_start, this.range_stop)) {
this.update_range_dates(date);
this.do_ranged_search();
@@ -392,18 +392,9 @@ instance.web_calendar.CalendarView = instance.web.View.extend({
var self = this;
$.when(this.has_been_loaded).then(function() {
self.$element.show();
if (self.sidebar) {
self.sidebar.$element.show();
}
self.do_push_state({});
});
},
do_hide: function() {
this._super();
if (this.sidebar) {
this.sidebar.$element.hide();
}
},
get_selected_ids: function() {
// no way to select a record anyway
return [];
@@ -1,27 +1,32 @@
<template>
<t t-name="CalendarView">
<div class="oe_calendar">
<div id="openerp_scheduler" class="dhx_cal_container" style="height: 600px;">
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button">&amp;nbsp;</div>
<div class="dhx_cal_next_button">&amp;nbsp;</div>
<div class="dhx_cal_today_button" t-opentag="true"></div>
<div class="dhx_cal_date" t-opentag="true"></div>
<div class="dhx_cal_tab" name="day_tab" style="right:204px;" t-opentag="true"></div>
<div class="dhx_cal_tab" name="week_tab" style="right:140px;" t-opentag="true"></div>
<div class="dhx_cal_tab" name="month_tab" style="right:76px;" t-opentag="true"></div>
</div>
<div class="dhx_cal_header">
</div>
<div class="dhx_cal_data">
</div>
</div>
</div>
<table cellspacing="0" cellpadding="0" border="0" width="100%" class="oe_calendar_table">
<tr>
<td width="100%">
<div class="oe_calendar dhx_cal_container">
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button">&amp;nbsp;</div>
<div class="dhx_cal_next_button">&amp;nbsp;</div>
<div class="dhx_cal_today_button" t-opentag="true"></div>
<div class="dhx_cal_date" t-opentag="true"></div>
<div class="dhx_cal_tab" name="day_tab" style="right:204px;" t-opentag="true"></div>
<div class="dhx_cal_tab" name="week_tab" style="right:140px;" t-opentag="true"></div>
<div class="dhx_cal_tab" name="month_tab" style="right:76px;" t-opentag="true"></div>
</div>
<div class="dhx_cal_header">
</div>
<div class="dhx_cal_data">
</div>
</div>
</td>
<td class="oe_calendar_sidebar_container"/>
</tr>
</table>
</t>
<t t-name="CalendarView.sidebar">
<div class="oe_calendar_sidebar" style="width: 500px">
<div class="oe_calendar_mini oe_left" style="width: 240px"/>
<div class="oe_calendar_filter oe_right" style="width: 240px">
<div class="oe_calendar_sidebar">
<div class="oe_calendar_mini"/>
<div class="oe_calendar_filter">
<h3><t t-esc="widget.getParent().color_string"/></h3>
</div>
</div>
+34 -4
View File
@@ -136,6 +136,7 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
},
do_search: function(domain, context, group_by) {
var self = this;
this.$element.find('.oe_view_nocontent').remove();
this.search_domain = domain;
this.search_context = context;
this.search_group_by = group_by;
@@ -172,10 +173,15 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
var def = $.Deferred();
self.do_clear_groups();
self.dataset.read_slice(self.fields_keys.concat(['__last_update']), { 'limit': self.limit }).then(function(records) {
var kgroup = new instance.web_kanban.KanbanGroup(self, records, null, self.dataset);
self.do_add_groups([kgroup]).then(function() {
def.resolve();
});
if (_.isEmpty(records)) {
self.no_result();
def.reject();
} else {
var kgroup = new instance.web_kanban.KanbanGroup(self, records, null, self.dataset);
self.do_add_groups([kgroup]).then(function() {
def.resolve();
});
}
}).then(null, function() {
def.reject();
});
@@ -288,6 +294,19 @@ instance.web_kanban.KanbanView = instance.web.View.extend({
this.do_warn("Kanban: could not find id#" + id);
}
},
no_result: function() {
if (this.groups.group_by
|| !this.options.action
|| !this.options.action.help) {
return;
}
this.$element.find('.oe_view_nocontent').remove();
this.$element.prepend(
$('<div class="oe_view_nocontent">')
.append($('<img>', { src: '/web/static/src/img/view_empty_arrow.png' }))
.append($('<div>').html(this.options.action.help))
);
}
});
instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({
@@ -361,8 +380,19 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({
this.$element.data('widget', this);
this.$records.data('widget', this);
this.$has_been_started.resolve();
this.compute_cards_height();
return def;
},
compute_cards_height: function() {
var self = this;
var min_height = 0;
_.each(this.records, function(r) {
min_height = Math.max(min_height, r.$element.outerHeight());
});
_.each(this.records, function(r) {
r.$element.css('min-height', min_height);
});
},
destroy: function() {
this._super();
if (this.$records) {
@@ -1,7 +1,7 @@
<template>
<t t-name="KanbanView">
<div class="oe_kanban_buttons"/>
<div class="oe_kanban_view">
<div class="oe_kanban_buttons"/>
<table class="oe_kanban_groups">
<tr class="oe_kanban_groups_headers">
</tr>
@@ -12,7 +12,7 @@
</t>
<div t-name="KanbanView.buttons" class="oe_kanban_buttons">
<t t-if="widget.options.action_buttons !== false">
<button type="button" class="oe_button oe_kanban_button_new">Create</button>
<button type="button" class="oe_button oe_kanban_button_new oe_form_button_hi">Create</button>
</t>
</div>
<t t-name="KanbanView.group_header">