mirror of
https://github.com/skot/bitaxe.git
synced 2025-03-20 06:41:52 +01:00
4443 lines
408 KiB
HTML
4443 lines
408 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Interactive BOM for KiCAD</title>
|
|
<style type="text/css">
|
|
:root {
|
|
--pcb-edge-color: black;
|
|
--pad-color: #878787;
|
|
--pad-hole-color: #CCCCCC;
|
|
--pad-color-highlight: #D04040;
|
|
--pad-color-highlight-both: #D0D040;
|
|
--pad-color-highlight-marked: #44a344;
|
|
--pin1-outline-color: #ffb629;
|
|
--pin1-outline-color-highlight: #ffb629;
|
|
--pin1-outline-color-highlight-both: #fcbb39;
|
|
--pin1-outline-color-highlight-marked: #fdbe41;
|
|
--silkscreen-edge-color: #aa4;
|
|
--silkscreen-polygon-color: #4aa;
|
|
--silkscreen-text-color: #4aa;
|
|
--fabrication-edge-color: #907651;
|
|
--fabrication-polygon-color: #907651;
|
|
--fabrication-text-color: #a27c24;
|
|
--track-color: #def5f1;
|
|
--track-color-highlight: #D04040;
|
|
--zone-color: #def5f1;
|
|
--zone-color-highlight: #d0404080;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0px;
|
|
height: 100%;
|
|
font-family: Verdana, sans-serif;
|
|
}
|
|
|
|
.dark.topmostdiv {
|
|
--pcb-edge-color: #eee;
|
|
--pad-color: #808080;
|
|
--pin1-outline-color: #ffa800;
|
|
--pin1-outline-color-highlight: #ccff00;
|
|
--track-color: #42524f;
|
|
--zone-color: #42524f;
|
|
background-color: #252c30;
|
|
color: #eee;
|
|
}
|
|
|
|
button {
|
|
background-color: #eee;
|
|
border: 1px solid #888;
|
|
color: black;
|
|
height: 44px;
|
|
width: 44px;
|
|
text-align: center;
|
|
text-decoration: none;
|
|
display: inline-block;
|
|
font-size: 14px;
|
|
font-weight: bolder;
|
|
}
|
|
|
|
.dark button {
|
|
/* This will be inverted */
|
|
background-color: #c3b7b5;
|
|
}
|
|
|
|
button.depressed {
|
|
background-color: #0a0;
|
|
color: white;
|
|
}
|
|
|
|
.dark button.depressed {
|
|
/* This will be inverted */
|
|
background-color: #b3b;
|
|
}
|
|
|
|
button:focus {
|
|
outline: 0;
|
|
}
|
|
|
|
button#tb-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#lr-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#bom-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-grouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-ungrouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-netlist-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#copy {
|
|
background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
|
|
background-position: 6px 6px;
|
|
background-repeat: no-repeat;
|
|
background-size: 26px 26px;
|
|
border-radius: 6px;
|
|
height: 40px;
|
|
width: 40px;
|
|
margin: 10px 5px;
|
|
}
|
|
|
|
button#copy:active {
|
|
box-shadow: inset 0px 0px 5px #6c6c6c;
|
|
}
|
|
|
|
textarea.clipboard-temp {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 2em;
|
|
height: 2em;
|
|
padding: 0;
|
|
border: None;
|
|
outline: None;
|
|
box-shadow: None;
|
|
background: transparent;
|
|
}
|
|
|
|
.left-most-button {
|
|
border-right: 0;
|
|
border-top-left-radius: 6px;
|
|
border-bottom-left-radius: 6px;
|
|
}
|
|
|
|
.middle-button {
|
|
border-right: 0;
|
|
}
|
|
|
|
.right-most-button {
|
|
border-top-right-radius: 6px;
|
|
border-bottom-right-radius: 6px;
|
|
}
|
|
|
|
.button-container {
|
|
font-size: 0;
|
|
margin: 10px 10px 10px 0px;
|
|
}
|
|
|
|
.dark .button-container {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.button-container button {
|
|
background-size: 32px 32px;
|
|
background-position: 5px 5px;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
@media print {
|
|
.hideonprint {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
canvas {
|
|
cursor: crosshair;
|
|
}
|
|
|
|
canvas:active {
|
|
cursor: grabbing;
|
|
}
|
|
|
|
.fileinfo {
|
|
width: 100%;
|
|
max-width: 1000px;
|
|
border: none;
|
|
padding: 5px;
|
|
}
|
|
|
|
.fileinfo .title {
|
|
font-size: 20pt;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.fileinfo td {
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
max-width: 1px;
|
|
width: 50%;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.bom {
|
|
border-collapse: collapse;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 10pt;
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
margin-top: 1px;
|
|
position: relative;
|
|
}
|
|
|
|
.bom th,
|
|
.bom td {
|
|
border: 1px solid black;
|
|
padding: 5px;
|
|
word-wrap: break-word;
|
|
text-align: center;
|
|
position: relative;
|
|
}
|
|
|
|
.dark .bom th,
|
|
.dark .bom td {
|
|
border: 1px solid #777;
|
|
}
|
|
|
|
.bom th {
|
|
background-color: #CCCCCC;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
.dark .bom th {
|
|
background-color: #3b4749;
|
|
}
|
|
|
|
.bom tr.highlighted:nth-child(n) {
|
|
background-color: #cfc;
|
|
}
|
|
|
|
.dark .bom tr.highlighted:nth-child(n) {
|
|
background-color: #226022;
|
|
}
|
|
|
|
.bom tr:nth-child(even) {
|
|
background-color: #f2f2f2;
|
|
}
|
|
|
|
.dark .bom tr:nth-child(even) {
|
|
background-color: #313b40;
|
|
}
|
|
|
|
.bom tr.checked {
|
|
color: #1cb53d;
|
|
}
|
|
|
|
.dark .bom tr.checked {
|
|
color: #2cce54;
|
|
}
|
|
|
|
.bom tr {
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.bom .numCol {
|
|
width: 30px;
|
|
}
|
|
|
|
.bom .value {
|
|
width: 15%;
|
|
}
|
|
|
|
.bom .quantity {
|
|
width: 65px;
|
|
}
|
|
|
|
.bom th .sortmark {
|
|
position: absolute;
|
|
right: 1px;
|
|
top: 1px;
|
|
margin-top: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: transparent transparent #221 transparent;
|
|
transform-origin: 50% 85%;
|
|
transition: opacity 0.2s, transform 0.4s;
|
|
}
|
|
|
|
.dark .bom th .sortmark {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.bom th .sortmark.none {
|
|
opacity: 0;
|
|
}
|
|
|
|
.bom th .sortmark.desc {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.bom th:hover .sortmark.none {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.bom .bom-checkbox {
|
|
width: 30px;
|
|
position: relative;
|
|
user-select: none;
|
|
-moz-user-select: none;
|
|
}
|
|
|
|
.bom .bom-checkbox:before {
|
|
content: "";
|
|
position: absolute;
|
|
border-width: 15px;
|
|
border-style: solid;
|
|
border-color: #51829f transparent transparent transparent;
|
|
visibility: hidden;
|
|
top: -15px;
|
|
}
|
|
|
|
.bom .bom-checkbox:after {
|
|
content: "Double click to set/unset all";
|
|
position: absolute;
|
|
color: white;
|
|
top: -35px;
|
|
left: -26px;
|
|
background: #51829f;
|
|
padding: 5px 15px;
|
|
border-radius: 8px;
|
|
white-space: nowrap;
|
|
visibility: hidden;
|
|
}
|
|
|
|
.bom .bom-checkbox:hover:before,
|
|
.bom .bom-checkbox:hover:after {
|
|
visibility: visible;
|
|
transition: visibility 0.2s linear 1s;
|
|
}
|
|
|
|
.split {
|
|
-webkit-box-sizing: border-box;
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
background-color: inherit;
|
|
}
|
|
|
|
.split.split-horizontal,
|
|
.gutter.gutter-horizontal {
|
|
height: 100%;
|
|
float: left;
|
|
}
|
|
|
|
.gutter {
|
|
background-color: #ddd;
|
|
background-repeat: no-repeat;
|
|
background-position: 50%;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
.dark .gutter {
|
|
background-color: #777;
|
|
}
|
|
|
|
.gutter.gutter-horizontal {
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
|
|
cursor: ew-resize;
|
|
width: 5px;
|
|
}
|
|
|
|
.gutter.gutter-vertical {
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
|
|
cursor: ns-resize;
|
|
height: 5px;
|
|
}
|
|
|
|
.searchbox {
|
|
float: left;
|
|
height: 40px;
|
|
margin: 10px 5px;
|
|
padding: 12px 32px;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 18px;
|
|
box-sizing: border-box;
|
|
border: 1px solid #888;
|
|
border-radius: 6px;
|
|
outline: none;
|
|
background-color: #eee;
|
|
transition: background-color 0.2s, border 0.2s;
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
|
|
background-position: 10px 10px;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.dark .searchbox {
|
|
background-color: #111;
|
|
color: #eee;
|
|
}
|
|
|
|
.searchbox::placeholder {
|
|
color: #ccc;
|
|
}
|
|
|
|
.dark .searchbox::placeholder {
|
|
color: #666;
|
|
}
|
|
|
|
.filter {
|
|
width: calc(60% - 64px);
|
|
}
|
|
|
|
.reflookup {
|
|
width: calc(40% - 10px);
|
|
}
|
|
|
|
input[type=text]:focus {
|
|
background-color: white;
|
|
border: 1px solid #333;
|
|
}
|
|
|
|
.dark input[type=text]:focus {
|
|
background-color: #333;
|
|
border: 1px solid #ccc;
|
|
}
|
|
|
|
mark.highlight {
|
|
background-color: #5050ff;
|
|
color: #fff;
|
|
padding: 2px;
|
|
border-radius: 6px;
|
|
}
|
|
|
|
.dark mark.highlight {
|
|
background-color: #76a6da;
|
|
color: #111;
|
|
}
|
|
|
|
.menubtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.statsbtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.iobtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.visbtn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
padding: 15px;
|
|
}
|
|
|
|
#vismenu-content {
|
|
left: 0px;
|
|
font-family: Verdana, sans-serif;
|
|
}
|
|
|
|
.dark .statsbtn,
|
|
.dark .savebtn,
|
|
.dark .menubtn,
|
|
.dark .iobtn,
|
|
.dark .visbtn {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.flexbox {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
}
|
|
|
|
.savebtn {
|
|
background-color: #d6d6d6;
|
|
width: auto;
|
|
height: 30px;
|
|
flex-grow: 1;
|
|
margin: 5px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.savebtn:active {
|
|
background-color: #0a0;
|
|
color: white;
|
|
}
|
|
|
|
.dark .savebtn:active {
|
|
/* This will be inverted */
|
|
background-color: #b3b;
|
|
}
|
|
|
|
.stats {
|
|
border-collapse: collapse;
|
|
font-size: 12pt;
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
min-width: 450px;
|
|
}
|
|
|
|
.dark .stats td {
|
|
border: 1px solid #bbb;
|
|
}
|
|
|
|
.stats td {
|
|
border: 1px solid black;
|
|
padding: 5px;
|
|
word-wrap: break-word;
|
|
text-align: center;
|
|
position: relative;
|
|
}
|
|
|
|
#checkbox-stats div {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
#checkbox-stats .bar {
|
|
background-color: rgba(28, 251, 0, 0.6);
|
|
}
|
|
|
|
.menu {
|
|
position: relative;
|
|
display: inline-block;
|
|
margin: 10px 10px 10px 0px;
|
|
}
|
|
|
|
.menu-content {
|
|
font-size: 12pt !important;
|
|
text-align: left !important;
|
|
font-weight: normal !important;
|
|
display: none;
|
|
position: absolute;
|
|
background-color: white;
|
|
right: 0;
|
|
min-width: 300px;
|
|
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
|
z-index: 100;
|
|
padding: 8px;
|
|
}
|
|
|
|
.dark .menu-content {
|
|
background-color: #111;
|
|
}
|
|
|
|
.menu:hover .menu-content {
|
|
display: block;
|
|
}
|
|
|
|
.menu:hover .menubtn,
|
|
.menu:hover .iobtn,
|
|
.menu:hover .statsbtn {
|
|
background-color: #eee;
|
|
}
|
|
|
|
.menu-label {
|
|
display: inline-block;
|
|
padding: 8px;
|
|
border: 1px solid #ccc;
|
|
border-top: 0;
|
|
width: calc(100% - 18px);
|
|
}
|
|
|
|
.menu-label-top {
|
|
border-top: 1px solid #ccc;
|
|
}
|
|
|
|
.menu-textbox {
|
|
float: left;
|
|
height: 24px;
|
|
margin: 10px 5px;
|
|
padding: 5px 5px;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 14px;
|
|
box-sizing: border-box;
|
|
border: 1px solid #888;
|
|
border-radius: 4px;
|
|
outline: none;
|
|
background-color: #eee;
|
|
transition: background-color 0.2s, border 0.2s;
|
|
width: calc(100% - 10px);
|
|
}
|
|
|
|
.menu-textbox.invalid,
|
|
.dark .menu-textbox.invalid {
|
|
color: red;
|
|
}
|
|
|
|
.dark .menu-textbox {
|
|
background-color: #222;
|
|
color: #eee;
|
|
}
|
|
|
|
.radio-container {
|
|
margin: 4px;
|
|
}
|
|
|
|
.topmostdiv {
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: white;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
#top {
|
|
height: 78px;
|
|
border-bottom: 2px solid black;
|
|
}
|
|
|
|
.dark #top {
|
|
border-bottom: 2px solid #ccc;
|
|
}
|
|
|
|
#dbg {
|
|
display: block;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: #aaa;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: #666;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: #555;
|
|
}
|
|
|
|
.slider {
|
|
-webkit-appearance: none;
|
|
width: 100%;
|
|
margin: 3px 0;
|
|
padding: 0;
|
|
outline: none;
|
|
opacity: 0.7;
|
|
-webkit-transition: .2s;
|
|
transition: opacity .2s;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
.slider:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.slider::-webkit-slider-runnable-track {
|
|
-webkit-appearance: none;
|
|
width: 100%;
|
|
height: 8px;
|
|
background: #d3d3d3;
|
|
border-radius: 3px;
|
|
border: none;
|
|
}
|
|
|
|
.slider::-webkit-slider-thumb {
|
|
-webkit-appearance: none;
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
margin-top: -4px;
|
|
}
|
|
|
|
.dark .slider::-webkit-slider-thumb {
|
|
background: #3d3;
|
|
}
|
|
|
|
.slider::-moz-range-thumb {
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.slider::-moz-range-track {
|
|
height: 8px;
|
|
background: #d3d3d3;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.dark .slider::-moz-range-thumb {
|
|
background: #3d3;
|
|
}
|
|
|
|
.slider::-ms-track {
|
|
width: 100%;
|
|
height: 8px;
|
|
border-width: 3px 0;
|
|
background: transparent;
|
|
border-color: transparent;
|
|
color: transparent;
|
|
transition: opacity .2s;
|
|
}
|
|
|
|
.slider::-ms-fill-lower {
|
|
background: #d3d3d3;
|
|
border: none;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider::-ms-fill-upper {
|
|
background: #d3d3d3;
|
|
border: none;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider::-ms-thumb {
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
}
|
|
|
|
.shameless-plug {
|
|
font-size: 0.8em;
|
|
text-align: center;
|
|
display: block;
|
|
}
|
|
|
|
a {
|
|
color: #0278a4;
|
|
}
|
|
|
|
.dark a {
|
|
color: #00b9fd;
|
|
}
|
|
|
|
#frontcanvas,
|
|
#backcanvas {
|
|
touch-action: none;
|
|
}
|
|
|
|
.placeholder {
|
|
border: 1px dashed #9f9fda !important;
|
|
background-color: #edf2f7 !important;
|
|
}
|
|
|
|
.dragging {
|
|
z-index: 999;
|
|
}
|
|
|
|
.dark .dragging>table>tbody>tr {
|
|
background-color: #252c30;
|
|
}
|
|
|
|
.dark .placeholder {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.column-spacer {
|
|
top: 0;
|
|
left: 0;
|
|
width: calc(100% - 4px);
|
|
position: absolute;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
height: 100%;
|
|
}
|
|
|
|
.column-width-handle {
|
|
top: 0;
|
|
right: 0;
|
|
width: 4px;
|
|
position: absolute;
|
|
cursor: col-resize;
|
|
user-select: none;
|
|
height: 100%;
|
|
}
|
|
|
|
.column-width-handle:hover {
|
|
background-color: #4f99bd;
|
|
}
|
|
|
|
.help-link {
|
|
border: 1px solid #0278a4;
|
|
padding-inline: 0.3rem;
|
|
border-radius: 3px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.dark .help-link {
|
|
border: 1px solid #00b9fd;
|
|
}
|
|
|
|
|
|
</style>
|
|
<script type="text/javascript" >
|
|
///////////////////////////////////////////////
|
|
/*
|
|
Split.js - v1.3.5
|
|
MIT License
|
|
https://github.com/nathancahill/Split.js
|
|
*/
|
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
|
|
// This work is free. You can redistribute it and/or modify it
|
|
// under the terms of the WTFPL, Version 2
|
|
// For more information see LICENSE.txt or http://www.wtfpl.net/
|
|
//
|
|
// For more information, the home page:
|
|
// http://pieroxy.net/blog/pages/lz-string/testing.html
|
|
//
|
|
// LZ-based compression algorithm, version 1.4.4
|
|
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/*!
|
|
* PEP v0.4.3 | https://github.com/jquery/PEP
|
|
* Copyright jQuery Foundation and other contributors | http://jquery.org/license
|
|
*/
|
|
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
|
|
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
|
|
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
|
|
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
|
|
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
|
|
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
|
|
for(var b=a;b.parentNode;)b=b.parentNode;
|
|
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
|
|
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
|
|
//
|
|
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
|
|
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
|
|
var b=x(a,this.findElements,this);
|
|
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
|
|
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
|
|
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
|
|
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
|
|
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
|
|
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
|
|
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
|
|
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
|
|
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
|
|
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
|
|
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
|
|
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
|
|
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
|
|
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
|
|
b=!1;else if("XY"===c)
|
|
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
|
|
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
|
|
vacuumTouches:function(a){var b=a.touches;
|
|
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
|
|
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
|
|
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
|
|
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
|
|
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
|
|
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
|
|
if(this.isPrimaryTouch(c)){
|
|
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var pcbdata = JSON.parse(LZString.decompressFromBase64("N4IgpgJg5mDOD6AjRB7AHiAXAAlAWwEsA7DHAdjIDoBGAZgE4AabEQogTy2wBYreAmZqwCGaUtjq1KZAByCWeUZxzVelWrW4BfIZBiwuAbVAAXdgAcwXELDBQ8YIiZBDYJ4QCdnOQ2XrT+Jh4qAFZ+fgBdXSIIIzpqGnp5NTDIoQB3AggTAAsuAAYaHVwQM0trTwBjFxY3T29sQ3jE+VVuaW5uKJYPYQgCAFcDHH5KEO5Xdy9hIigAGyscQvzoiBn5xex6ZYys3IKi5lMLTZAqmpsphqbaBOok5hDlgDY0nr7B4exR8cn69YWXAAtNtKCsWI41rNAUswbtsnlYdRisdyjgzh5qn8vEY/AEgk8wa9uiBev0hlwfhNalcAZsgdQZDsITE6cDQeCQJkEQdkUdSidrLZ7I5nNjrs17q01PwZF1Vrj/GRAsxVFRZfKWNz9kiUQK0bU7A4nBc6jifJJpLR5IT8sSFRaNFbpe0yJ0SdrEdhCnySmVTudxYr8arOh1NaSPhSRmNqZd/tDNhzVmyVEy4Vq9l6fXr/UKjaLTVdcVRGUE2uGSZCSzQZASXm8uVneVoSRBeplZl9QLACHMANawSoeMCOLigABiRlMOQIlX7RDgXx9IVcADcoOZhDqWABZajUZ5jfJusjURghKSBV60MgAGQPR6ep/PYUozwo9wfh8oMj/3H4WgLykfJqHyMJaG/I8/zlQCL1GGQP2eZCoMoehaGefIAPg6RlQAmRUPoGQMOeV9Rjwpl6G/KgTz/egmDfD8zyog8qFuZ56ImRjPxY6g+GocJrRwij8l4vgQiIsJhLw2VqOPF8cMQshkOeOTn14V8pGoS9aAI1jKG4CSZCky9KH4bhEMZOTuAEwDBFM69ALIfcf3Us8cIYNUQjUk8NJw8CZFUfhULc18EhE+gXKfXz3JCBILI/OgQpi19CiUlTUJggCgLisz8lE+jMv/ODcoCoLCIwrD7MKehXm2bhCOI5DUrQ7TZW8/TaLrBi0qQlD9PYziL165T+r4gzbKEwl6Da4zrKMkyarqrCfIU0qQkCgDVr83LNF0kJVP0wzJPs+KGFEhqjsm06DKUugQFzWd50XWBlxoVdag3LcdxAFz/DoQSZBw2rAhWg9/HyOVSIYkCNvK8GwSh+5gLygreP+61AKB0y9uMw77jM/hT2eFHuHO+hLoJzGzy4qQErPSCEbi24YbGPbrW/fxngOrCyBRy8yY5hGoYg0m7sZgmKb40jSfJy7+GWW8Udxg6HwVxHuGhlGFbRtXliR1mwJCZTqD1sElbfEH6s5tC6104HZo6gnucw3gHbCOaEZd3mUaNk393VyHNeRt96aShGg610PxbNyOQ4SGaPadiGDYvBPHYD/Xg4Ys7tgpm245zgy5YL1Pcp1+j0ZoTH7fWzbgoR8JieGtDlsp/xqdUFvE/am3mZDkaMq9nm3cJdKxv8EWSpqx2balk3u7b2OLYSMqtoErOo4SCvCo3jWt+LvPuAe/lcjnBcl15D6bC+7cvV+g9RlocCDuxq8Qd078n8vRk+dM7SNCBS/uoH+Mg/6jB7ohYBz8Qiv0UjrCywD+DGwptjciMleKjEPETMiAQLKm0fkSU89lyLmSAQeBOypAJcXQeZQI34E7mVIquN8ch8qIIob+ZS9ESaW1mvjBIch0IUF9uBZSDcDzSECmQDa2tQIMKtDZBg2sEpfk4c8XS2xNJmQ/npSR4wSI5XfjePR8ULIARYVeVRvF4r5SZLwq88jOG0FAX/LSYjXgKJcbcMBik+r3k4dwOxdphJkOoC5b+PjwE6JMV41xOFHKf2cfEt8a8Ja2MhiE3KkCBEGVqlhLigiEGmLGDNWUN0KB0JsVIvisjcoUQIZIpIwcWHhTCcAg8TwZpp1wlUpBYFrRFzYVhPRT8X7PGxunD2+NIm/38nDMm0CUmjESTICJRCBA9JVgEgSGzlQt3Hs5Qh3i5m5TJnnJ2CQTm+Nyn7TxxyUmFEqQBegJ8/RPQvq9K+65Nx32sPuSGuFXYsJWboh8gKKDAp6Q0gFSplJYRBWCI25lwUyCBQi/yyLuAArRZCjFZy7qXVEuiwyBzik4pJSwtKxTwVwqhQSxKx9Hrnxem9bSPzvr3wBe0V40tcFw3oJecF7RVCwOiTk7l75+B8t9jpch+QpC8oXv/OVBCFVSplW+Z59CBnvg4rXUYTF7hqqkGeDi9EcJ1WNg3dVgVBLRIFUK3Vgquk0LGIFQVjMsJgieBoEhUrBXKmFWCegfg4qWp4mqkVhljbST6WBaNYrZWAPCQmsYbogoJKcd6pVMtUkLK9Ty6VyqinsL0t642NlsL1PaWmsI3Nwg9KNTNYNZMBJyibYEa1waNCu14QkK1Qa03mUyZM98kbg33B8UXBpk6Y1/1LSM4Nokw24NAuBFFabwIKqmlgjxNr2j5RwTlLBqrwVSG2KeRFCsTW/kmtEm957pCHkrjhABulb3IXQmgmg+6n25rXVi/9xa83hQwf+/VY7B38ABYqkDYV1Bk2MgE9VAGW7asimmtDddVBerg5q1eBa3kzhZZfJE19YC3x+i5dof4cEqMsno9o6EFUqn/h4xpzHn6DL8aNfGtG5CxVofhb8tGXGiVCRZUSomrQnQjcxGTzxOikTdc2mT4xhG8NIVJ3i7Qni1OidqpjBlxh0B/ePfjBk7RxVZmvCR7QXF1mTUk1Q6hH6BTkbrA87RpWuyMWZVRxmN5MksQFxjMn8jIIOm41GldvwXooKg5zeiL3cbY7Deu8W0JpYYghBBOyEt+AsvJ+4NHfziaLmp7zv5BMIYijJljPHcoWYazlnpVswaubo0J39xtSIydkGtFZ+U4vVY4oJE9YXSLGf0zIh9H8dkOY2rlmJTkZOHlgm6sh02ItkB8Vp2Lu86BoUS8Vt8dzGmpdY0XDrlMrtNcEX1fGhWks1p0xFqLH4m08TK41tjTyZLGb+0XbbVkDz3bY9vQLxHSgfNZd8z6vzqNgVLERbYOVF28HBUeKhZ5/XvrWSjxIdYFUeRmrwDqdpifo7J15bH1PSepORV6o8TDUjtdnmBVnUsbI9Ja1z9Qds/B8/y/Ty8gl+2/lFwL14p5Cm/ie/Tj8XSMetSTvT3HAlMUbpZwEHB/rPIU4BUee4JPVdhy9ajs3ZL2FHKp6bmnY9pcngZ+b8WMOz7PTI96d6HK/nomN+oUNRFGBkDSuMZBKGjydAOqHmqoEwGHSp9wdC0qmBnjBJ0PbuuU/WmRhnug9Ezz05jyTDP5S5DlqPOJjC54M+3nsUn1nsCBJAQzxYiZlOjx2k1m7dv2ewbgTQsW9P8UB9EpCFaeIEx2/IM7+CyfGjMLKVD1c2Qdok+T/GJDe25fK+ySNnkvPo/q5F7VZP3PafV+Z94BoBfsYd9AzD2hBPyl78bTlLG5/xkLF28n3IbmKSDiNCUNbzEvVPZGYAs/VQAFC/QyMvQoQCMIaTAXbSIiYyOPAycfenNAv8VcYAn/SPWAo/K/YA1+CPe/S/SAtFCmWgynf/DNdyYAivA/IfMBGyJgjGM/e/JIPiJgYAgpbPHgjiIJfgmg0A1QenHvJTPmCZNCFPFPLvdQSLN0QQOQ2gxQ+nBgPwIGdQiQolaPeAxgAQrPO/AXKg/grg0A8A4/Yw/wDvT2ZPIwsghWJIXXbQkPMgzvACC4EcAAMy4F9FRFOGFGNDFBpHqDiHVUvBCWwGf1gW2DCCrBiCiKkBiJJjiMVm5gsg9GbCRH4FzEFHRFCMLCDAtCH3yliPiIkg3WSNiHKMn0qIyOfwVWyJkFyJ5HyOZS9y+XIz92R0ZGLhpkEGdRPBczRU0VFmdVgW/DRSYRUkYC3Ui2hlmPeiCiBiWP4BWIPDRTsWNnPGmKdioBmg0A0EWNtQkhNjkkQn2ImF1WUkMkAmuMZFElXF1UrV5meMojePVTbTUXGhuJpnOKsRPEkP0hONOOBJoEMl4Hxl2Mhn2KhO3SxlWO0nWKROWP+LmM1gWN1SPW2MGMmLgjxKeBRJ2KGMzTxNDWQz+kF0FWJO9XxKxLvW+POMPUxMwwJgGUojZLBA5Jtm5IkzxP5IjgRPcl1VFVhNWIhLON1RHRplWMClZLlL/FONpMBK7k2O2MDgOmRi1LUXVjRPwihJdTNnuHqj5lGL2z0nVkCHwh+NNSUwgjNk0HuCwihI+Kxz3ldPqihKnVeLNjtPaiROpONkDJxOQiRNJKSUNLimNOFK2P+P8HyXpIxMTKrg1LuPVWRJc0nheMFRDNkDDIRgoF5hJglJY0FRtlLNhKhL+IzPzIdLGC2JE2Fm5iBPeLdE+IRhTKkl1V5SHljPRP7N836ltIjPLOiK7K9NtIpmDPeJbIP3Vh9PdN1XrN8LAACJUEKINBsALBNDKMaEfAMg0SalVHVWVBCDqLiB/DCSU3PNNWQQ6J3B9AKNPiKMNBFAPIiPNCPJ/E1l0gwgfL5KvIdD/NZ3wXvIkGzPAmfOzBoDfPeVI16J93ZUR05X+XJKUzdNXDlF/HGAJLRWwsSMYGInwuzkVKBjIp/wJIhnCGQ1IovUizJK5MbMYpAOJgFPbK7jwtEhwXbjMkkDOLwtlBZhtmlVOKAjwoAldh2X+m4omDwtIgbQln+jYrwrPD5QLnotjTwqZB2TRT/FItowIuZOIvAmMvIuhkzhoAUsspoqTNKXwhJj0tMs5MniopMoouFioqkAcqrlkFhMEDIqLylK9jrDCEUsPSSAVKZjnMQkstUB3VoA3K3IkB3JCP3PCPjF/KaB/FkGYEQlbkbGrAtGlVtkKqPBBjgqvgyvzC/OyrNAlHyqBmwDrClxKpSLKoTlavarkEbE9FqvfN3JKO/JyuarRQ+iKuqrArysmsKsnnCBqvIzquKKyqLEiO6pOwWvTU6vqKPPKpDzasnki2WtQpCFWs/LCI2tyoEh6squKuvK2qOrATygGryPOu6M+TZQoyoy5XTCU1ZLwoknTLvABp01wov0i3KgBsDR4ov1DU/nTDdEktIq30MjBrSn2ncmMlKVBsCjBFBjdlxpBpWIJoEntLRtjG8nJuYndNxpT2tLBu3nuFFgZuhq2gJrTzZr0ySGsoJuImQ3PFxuhq/AJpRshLwsRv2OZvfDhqiuHwkjCFlsBtePsufgVIJtVoLI0uIgDK1vlssomSLPvHFsFmEp5SCRRIFuxuFt5vxtGEiwtMstJrFqwToQwKUqtqRqwTpoVuNuQzBpWVZrgl1ufirLkEEvpKkrE1BIakjr4jdIVqSCVuCgTo9twuYz2xlsjqdp9hFulTFsEVtqptFqojNtRpFomUohVsNtxsfBEy1ohqpsLoyibqBqhulU5oHTroRqZorslvRppuLqFqptdvLsdqJr5hJr5rdoQsppJoxoTr9qpsZp9qjrZs7phuDujpbsfBQmXqTqpobtknToXsaOruk1zqntLsLteSEH8MCMur3IapuuuHTGwjiP8CJiesaD0upDxB/vhBfMOD9A/JfuusPMMA/upBErIF/ugcKE/sAfgeAfgqCP1Eytfqgf/uYBQYQdwbap81QczE6NQuftGsauLB8EIbgYIaQdgeIbOpzGGtOEqAIExEBCgdkHfDwY7kbDJE+AOGQXAgtVIZAa1xYD8L7AWH2owc92+oRxviRy5UIQpgT0WN2TnKHi0bAQ2K0e2F7nB3NlMyYGMckHhmOwVVMc0avFEtGVtgKuMdvFbx2QQhTplmMZxIp2AT8D22JOOzjIumAUwgmTdmMd1IZmAQAotQidIiicISJhcU1MCaSvzkIT4kE3LOO28ZkWAR3wVX0akBcbW0IWsZsjMeO3opc0dpcQqdserluHXl2QKftjUcMc9l2ToGs0tK0ZkuQnWXKb1N2UwnQiFhabqeGYTn6eexMfqeOTx1vFSqftYfqsgZ/OasNVlFVFc3GEhQjFKr/K2dauq2Uj2meGYYQoofWqgc4W2BOd2d4AeIQbuchh2ddA0TJgubQd5EQpIx6J+v6P+rzPTOML0x0tNo7gwmNKU3wv5pBa1m5hDXtLBsMoEkRcaPipprRdBdhYZlONRYV0i3tlhem31poNoljVheNjLLBohgVTVupYhbpehNTrBebPakhYC3BnZZpalPatlD/Ak1JcbJZd7RhddCEsgnavFe2aRYunal3D6vRcgLSLD35YRcgOjSTqVc1f4L8t1PLpxcRYNbJpoNgVrI0TQjjNPohmfC7lhawhUlUnatEmIjONhdUB1b/DvVxavBcc5uNcgMNVFfaqnURNeGtfWJZfDaYIQjFNNgFZsmDefUkpZcFZ5MjeQluLFblB9izdDa5nCEzQLe+JZbPGtOMMNQUvLe5irdTYJeVdxfjaFpZbtRNeRd7nauUnwK0giqeO7b4hJf9eGOWe3NWbWuwY2aMBmkJtqmYCtZTpcXoAQdnadoyNhbsmwsuYEmuanfGpncQI4g3YvWQWXdXaPfnewE3etG3Z+a6NPjh29xXCBcwsCDGGhgsrTRcVBu6cachO/frVKwEknlhL1KHx/e1NA5NjMe9Ug+A+fhPJUktIg6A5YkQ4nJQ6W1/cQ7lBg95Pg/Q5qntKw6s2Jb0kQ/ojLN5Kz0DuaEKbVrrTJgDPo90kY5zWMnpIfEo4tMnNdECjUUo5I95Mrxrr/bw61jTUT1bIw+ddI+k9lH3FuHUGGNg+w+2OU6o9rMA5w4HVuKAjTWzxluaA2O9SM+LxM+jtM/4/Bm4+mc5ZE8FZQM09495OaW7Jc+o8P2wXhk0+E8P0jySWU/7baYg/Ajs9/HOMn0I4i5tYSsPxi+aAqZGSi+UI6mU4DZVAC+Nl0iU4gX89Q5w6flU9S8I7y/fH09K7Q+48NUq50405+E/Z+PaEULCutCQ+QlI5qNiva8y7U/fEAo0DHfSonZYHYc4asFueU+QWAr4hJEEejB9wLPEfQb+dh2QsBfQv9z3E6URlRpA/UFvBc0aJcQ7Pff2hkzrAc4O7Jl/dcz8ck/fdu4JJ5T2deEWPO86b01TruPfdlFDX62qzihwo+/+gpmdOq171lHLPffYW7Ncyh/i9lAV1s6B/Bi/eR4/DjvUx+4+8mpkTCtc2yPETx9unI4GwB71OR+e/+NoySAYvbWLju5O9uNJ6kxYsaPddlOR7CBNqihMbO/sNvf+IvyU2h9B6Z+st25kQl5p94knxl8Z7l+/EXze5GJ54J7f124SMitJ6x9iu0hPOctJ7PC5+G/kfAcobfpvOi+NjPIkGR7m9mt26CkPGpEZ6d5W9+b3fWYPYtEN9O/t4EnEhecN9d6guD5Mx3bW4Ufhz6K2+o0jo0BqLeK6deAqaDpf2zwM7T/MlK0joHOGa0nT7nsL8qawRL8ijIpHU64aewQz+r6CVr4ycr7Bvw0k9z4b9NQ21jUSbAkKbb+kCU2092Uj3bMH7tUY92R/Yion43gLMIUUJkTTsdKz2yZ+DznLu78716cNV0lGcH7L80cNUQnosH5r6+0IQmVeEU7wslKy877Fo+bX+P9srz/Lpa9uFw1f4MRcbBr0zdA/9BYxeJSuNjaa7IaihUDSj3134DdEIV9Z/iP3IiAIscGlYfivjUbMROakrHfg0ztCm9/+eqNwkUxoCqACIwNQAeY1b4iU6M8XY7PXyf6JBn4xWcxmQMIH39KmIERKGslxrJ8SKhCSAeXUnwX9YBv/EAZPn9IsDdkS/ZWvXRhIP9RgQScCJITkER5y+ICf7jTQkEsYpBKyPrGGVxoiDX+0qfKEjWi7Lsv2j/IQc2VPIHErBYNRfL5mGbB1TB5AxfGAP0Z6Ce2ptBXjANf4z8I6vg3AYv3yhxkHBRArGK/xkFp1HBh4ZwbGA0DiCbBH6H/pv3CF8DLBG/AqOEKMFX99+V9bQcwM8HvhT+p9CQfIPUGyBVAB9coWoNf6gE5y4QyQSQPwFWRDBTfS/vQLYG8CLBqfYvu/3CH1oUhVAgYbjSP6sDEEYwjwXgO4HhCzUDPLRlgJiHPpghuyKoTiXCFfpIhV/UoW4I1Qd89+8A6wUMI8wCDN+5vZ+uN0qBcNp2NDGiIZAeaGp6I7RB+lGDejLcmwZDV8l9Tj7nVX2AeeiCdirRqE6Yd1AiICL5qiwrWx0cEUqCaiRkrW6kL8ICOrows0ivkZEf4HGBipzw0IoyHeEBGGRkqxhYpk6X6yEiVCDrK8PqieKAiXEXSXtmCFkB4cCRHcWBIywgTLsqIFI/ivWzdAt4GohI31B61q4qFVIgI7ERGx+DsjP4KI4qLoR+AYjuRcIkiCTEjZIjlRw+FSvW1gS+pYRQIktoamWLGwAUWNdtPgQQhBJl+4KM0cGURFKjTRpSFmPWxhE2iQEDIkkTQC7KOEaoGabCFaz4hBJjIAKQRLIF9L2iM0LEUCMoWbgRiKmIYp0aq3kgZ8wICQCSM6PVFKjwU8UYPEAVFFEwk8tiXkZG35FhDUxMYy1uRHQiSALho3CBqUVuGNBQ0eqbNvICtbejV2pYToGQIXamogx0fH3g2L95NiqAzrKSNexWRh4XhLIfaoYGbFtAexE4syFOIHGPsNuSjSjCozfYdxuYJFZUObDiEsR32wiSEvuIVSHiA4XMOKFrD2wHioOFXQ8aHlqYXi/2RMDfHzFvHniNOiBMPLXzPHsRBOhQbmI+P/GHjuOTyTWAxTPF+AySiHIrLWX3Hos6OuHACGrX3HhBXC6XNKKhILL7joWXHP9vBJXz7jNYoEIjh0FwH7jnwYnRDsBJvHSiI8FHH8e+KfFjALWinZoERLLwgQAJ6HbeIBBS6fjeJSnNMZDBJ5CSwJzQJ4InkECgSNO8UOgLr0Qlug2uVyRkOL3QkcQeu/EooaxNuDZ9yub4v8TxMkntdg43/CSQ1zYm2DWJRES6O11di2SMIQXJ4cQNYl+Af2jMdrm6EolGjmBASbyZBK/wrJwgLHByfREiGIStiyE2riBMdowSXJ1klIXJME5PxdxFlFKeh0nEsToJxAmroTF0lRSd++U2pC8lYkYSwpvtOoSRMwipSCpgkhiTJ2yl/i/JHnNKSn1YncwN8h0drrAhsn7iupQ8BydePzytSvS4UtyVRPYkUdyIQUj8YoNqn30egm5FZmA13JXCbhw4m4HcFjxxEeU1Aebm8IOAfDBqD7JCgCw3F/VMKP4IdgB0BSBc9EJuSPJqUBQwIVetsa7q9Oq67c/w+HMCBMW+mG8VJJPf6Wl3elKZ6SWZOYiukB6G9FpX7QFN5gh6G9ppk5Y4iOi9IozGJaMmpCL3fBkSEZoQS9GCThmKFzI5xPgIKkJ4K81+IxF3EoI541Y/pLuRLobyIifS2IgMp6azyJwMyXMJubPgZ3pm8AaSx5J4MhwpkaCCSpYZ6VmU5l3cccxAg4i7nM6NIqqnk0zlQFVlyQGW2nFWQJzEhMjlSLuUTigXGgCQeZLudzpjJlmWy0UPnZpjRHXwL97pOXPRDRH8mTkJi4XY8uhAgimcAZCs98GTKhlSz/iT4bGecW9lOxooEs0GQ9NrFrSsGvvJqjeT0wiygK0Fe2aBRnFpzDuvmd3ojJzmfCJGMfS3jc0bF5V05sgTObzNoCh8HMeeCPvTPrn3tUKMfJ9ihRfYJ9VGkWd6DoWvzqtI84KYbLHgzwyJf4SePQbYQzx1hb8XqaeVfgzxo5rCYEUeWXiwTWhK8I80ga0TrwhTG8O80CHFDgjoSZE8+csXIF7zzT1AgEZgdmJKF8E9Jd8wfDmOnzlTz5jhK5PkmIkHyN8D85+I/lYkAxt55Ys9kvJ6rcEwF4ufPIIgphCFyxgCwWoPLiiJ4AF5iL/OFCqgmjoFM8tfHxS9TbwYF6eJ5Kgq17RjPmida/AiVcIPzKF7kZ/HOR/Z0LpEJC38BpDBLRjlQ6jNhX4DoIPyr5MhTAhPLQVryiQRMbCM/hEXkLT0A8qRZxCrJiKFYY87CZpSJSLz88xHJAjag0Un56K/8pReBDLxXIX56i/uSHnrxh43CCYiZE/OfwvEs8dC10gwp/HkEH5G0QArJMKDWgNAr8vJO/Ofy3gCFD8zoBhFwneKrFTxRBRgo/HeLTFACuxLvlcUXzox4CzRbWEEIPy0llhW2FAujFIKSWk8eBWYXyUxK7C7CtRSEq+YFlgCfCzQuWJTzvzalCiynGmJuJAFoOYBcsfQtxFFL55LCp+VAW6gWcKFrCzAg4q9JcK7SEmZ/ETDcXliKAYebZoEviWXyqEkZQJZEoXniLVCmBIJW4R3naQ5FcS3xWYuUUIFlx8yvudkvGVMhHFSi4heUpXkjL155SueQgr7lHLPCnSzhY7Vlz+ilQLSgResrVGAr+FCy0snKx+VEo2kPCt5cUsIWPzhcQys/InOCJrMhxqc8oj8EZALtjipgnIs7z7moKF2aKACO1HepfCrmdYq3rc2jEpdr2+KhVIStznlFV4xWa9mSp0qUrS5Pw59r7h7mYV1Uz8EHoCPopygn0YCVGmKsFbYp3iiecDogVlVPoNo+HGVf+ElQKw45+UQmP+GDRara+6qiVXWgVVMAjVRKHlJXljRiqHiEkYNHtmo50j5S5aV0M7NXCEip0h4e1W6sYASilUhaK0I6qvEZoo0JQhzoCLDy+pg0qqrWBGvrQp59V3UvmHGpbKYYh8FCMqeavvwOrayWahLqATJi+quYK6JIO/gmAoiS1NqRfBrKLUVcQ19+CZOGqVDbovUCvT2bWqZDLFy0barzjqsKbOSG1VqlDj6F7TZpq1/s84j6DtTSoy1k63VcaqHzIJje/fedRPnej1RTOU62yOflIFBRYOI6yqKmipwaIJ1ea+3DUWKxnqTc3mFUBGpbU4EL1QMFEZWgPD04l14vCtcHhtTR4lZta0ZjBLFymq/1L6tVEeBPWRC71UamXEOo7X4kq8Yahnn2sAoaIlcNaldZIFqmAbmZW64tuASxjKylVeqgXO+vi46rxVBhddSl3Q3TrQNu6sqehtHXUA0VmDawBtMm6VzQZmgZgISJIaRhyQ7w6+KdPbl8qu5Aq5RhhQDygzqSjHZTrAl/bEoNMUxWTWh1hRmRTyQpXqd9OJRbE2OZjZTemVU20De+mm+TR5Wu76aCSR7XTYsQs3/FvFF6y0sp0wjk8DwSDbqeWSc0iziyYEEzJTU4nMdFFPm+QRgRM6cdlarmqzM6xs09VUePmiweE3a6RYhWvEKzTyQBhMixe5aMzQz0S0PEOJkieLY5rTGAy0oMGqSSVvKwTr0tSWsTj5qM1FbbYsW30cqU07J8LOkiJwXpoThtbGkak4cppwNlxJna1WpztUg6GRl0tFNeHrYii3paMIXdCRFcgc02bFBbsrxDeo2K9SfZHWx8elrk2WaTsLW6UXd1K3mbFRTsLGlVrMluzmNeYdEGxut7+8zEqoRDoeEOn8bjpgmj6t8LXEXT4+4m7bg/BdysQ2mvXJOChlLB1t0tSgsKi7mlSgs9t5tS3IJQR0OTba4KSHW8W8n1xy0NELSZ43a6J4h4VOUNI8QM7tdmkRjKnIFR9jpaGhg+MDcmz00QI/aJee1ncQp0Z0tCFrDAYTr4xN41N5HFbTUlbJU54dknNHa22I0qtmdCQglsRswjbCzJtuAXRrRy3fxOWgeNXcZsoRJ031iu0HYwhRbS7UdRSC0m+pl3RbSkrxb9YLqV05ic2AubXQ1s6BltzCDLBfspxh3kKf1XPK3d7oF3YU9SXuiGhjpR0S7HaIdZHeLuD0ZJYSgeGPXpqQby0LdqO30Xrug3JardZEiHseqZ02b091sAXOmMRLid+dYuP2eKVono6Zc+ev9r/xKVgaYIGm5PY7up15sEtDDN3S7mYqUkMOoeonCDs22t7YqwOqHYhwb3R7Ldf7U8sZzh3T7cO5ewfePsL2D5SwQ7TbavCj23by5+7LFUeSHzlhXtTcg5l1QP2T4j93ijOd8y95nT0Vk7FOdQ3P21gXtI6guS83TUnNEOmgGuTfpLmrcRNm3AHdRiSBEIS2RFMYuCMj2705CgBAkaGKi1yEllKxWdusLla4p+Ss7WfUwSIozFZ2k+4wpNUuLkiHdQJOQr3mdKztXdjLOYtOXvBUHm6cheIMiNIMOtjiVoyQvgaR3GEqAn+KUlgZLofhpA0ZcEeFBx08HpAmBhAwsSEPIHkR0BqEVrJEMEi/lwxCQ34xpKgHKdGBOQtYy45aGM6hByQwZtAPX9ICo4vA4oMYMTFxsc0dCGAf9E2H6eIQXcPYe0P4EtZmBumIwc8Og17DAeow5kxrr+HrD1cWzvYYIO6HiIMtew2gd0K7Fojxeew0ToRH2yv+3I09pTSYPMjpMbhlenIQkWfE8jR9OQifPKhuHDDsByAwSL8r86jDcB2I+IaQNeG5dHrDA34e8OslYDeBumCrvqOQGd9I1CuVtPsMmC3QrVJFp3lXamo/U44yY8ZFXFJyMVY1ffXOKvAo4OVQh7SMXMOZrGrQ1oOY6WFgSLH/mijf7ZuIk07dBiicHkjw2Oitlrj2kW4zQRcRS9BiG0cyMROOKvHmSNxmZWSokgPHv6jSyRd8cNY2UucwZHhn7NopswLIX+F4+CeFjKKGFiJ2E2wkRIUBsshrasmezOI8NaIhPLmIAtwn2y9sBvLEZoCglzEJKQ3B+itPHZLGH9mKp/U0EAgIUDoH0LEwBHuAvNwgRIMmFyb4Bp4TjLG5kysdZO2QBTLiPhsuNIh8mtIc+Lk9/RNiinY+/KtCsAa5SCp1AzUL9kEnkJ2hkRF+28DpEWIGn1G1lHU8BI9TmnpmRp7kar0ZB6kLTTfUrLVGXGQxL+NkQ0ygdZxTjvTxHB0wSLA2oKXTQZv0x0EjWWkLTdGWUYrM1gYCfT1jQOh6dghdo7TYRgMmmfJUL8fTSTfQwmaQiZmwlyInHLwDESZmbIEyXI6GedNmMfTveETB6bfFKQqzw/RTs2KKzFmvWvp5EeqDsgsCfTlp906EEhggxMzI57kWObrDvckqfZ6cxNFvDkzezO+fg2xEZAJRMzmTBUs2MEhkJMz4QDRBoFcO4H6z5piM8iLJWkQ9oF5hcwSJsOkR9TNUOM+CImKbn4uyZxzGGSIgFSDzvZnc5wbJMHQsuPp0s9yOAt1RMzMiUCFtF/P7mhzgiQyLKNoNemYzcCyCL+ZIhGxJzbpiC9ZLhi4Xgzv5m0y6YwsPm5aFMNpj6c/woWozlZ3szBfKO4oKzvfH0yfKKNEVOI1FhSTWfwukWGzVyDiFeYIunCwL0qGI4+Zwu9m88klz022ZkvCX8LCFjYo2Y2y5HILoFtMRvF4CDG2GHDa4expGMioTwoYeKPWne1CNYQJ077dSvOlnG/hgqgEWlDDwwJNG3iyGGnngMGQOCspOLZ5fdM7TFpmjK5AFe5FBWyJ7l5QnIECu4RxZvTUKzFfCtxX8BUV5+ElZUPvRgrEW9K15dAPIILZvTezRtFlGgpfp2TNzZoB/NPxe8C/ILURA4jeRQDmgCGanyAk2Q5NmVwIOVait7YPw3IvQYVd6tyhRCmV7SNlbq3Wgkt3ligPFaivEQFYnZw1DoQf4eWMrox9AhgP8vrWIEgBQtRFomQzQkj7iDtAdbrCJ0ajeUZyfoyeQYQ/Al1gq5HmGudBcj78HqxFrAS1QscG1965IlYiqEHrJ83vjtu6sPXWi4A7eKE0uv/S7iBWsK5lf6rX8Qr0VvK6QhUn6NIbdoTK/1aETI34dREVw6ahgudDEreVi9HtZz6k3kRh6ZfKcI61Q2KYv6U6yDaIgEifM4NjG0yNAi0ifMQNoq1wi+v0HebQ1iLSnkQhVlGbCsa61FaCRVWhbWVyKzldgSC02bRIWiHYLWtk2uEDLNqyjeRFE25rStkq+CMfLo2ZbzKn84qhWuVNk94tpq1bfZk22rQ/Vy68qDNsfWprskWI8Tf5ufWZCl1sBDraisxUti4omm+reDtExQ7qt8a4rbq1+B/bktjm/Nc9vgjhbT1iLX1b8B6XWNBlzaasfapL4MiziPwJZcW41QvtVK3dr9ocvdytT/yGVhW31N8BmOYtZMm2llJqBQlZE3VnWvmYWQfLIq8usGv7st2h7rhn8Upm9NkrW73Iye4mfNNj2yJBIoCS+obNL3kRpCrYmxcpl2hZRaUI9EmdCC6Rh5oIPDhFUXsDdNAEt1RRfbVBApmFZ9w++WTUBgI0CK94Q9vZjPHEpQuR1e5GMvu1RG14I+e96eOLIRK8rhwRM/fNMz2h73l8japbgc938DoqOcwPe7ssGxgaDkYl3dnveWKm1oO4ikGMhoLZ2RDr05fdsVgFZ2iDy+8qClW0BXD5EFtapY3sDXV1bDwe8vdAPOnwg691qEkFyMHy5QXDt+3auasjpPzvBwCNYVAMgXnTl9uQNoVNimG17Sjs8BI5Yd6jAHv9jh8v3bKwOkUnQb6+RHrRsW5iYQCgqAcjWFMjHP+2QNjfUdkCg84wTKwo7EvIP5Dt8oMS/a8ccO6HLjhgG494fTqGzExJ5jIBzv3a87Rl1Y2feVuhgL95iMuwJrbk/b7LvwuuxccB3MOQCYEBflsRU7EWIEM0RjkTAyXlGeJb937uqBkSyiQIiEADhU58XQ3Aopelp7+P1sqcFY4TTp8Rbpgfh5yLT2kWkVUC+lI+cyhpx+2QTEkKnLxKpzM6mJFOglVpvTOM9XIrOun3Iw9LpDO7V5tnl1+iAU7eJFOoYwR3ZzU4+6KyZoOzxpqmXRbCGjlqjhzMqFp1FOJ5MRlrkM5C0fPjndzuMhM7OeQTcjemV4Ms6qqoTvrYL2ZwZ3mdMhyj6zlPJs7qeXg07J5Bh6c7Yg82en7ztiIc8ZuSAHn/TlA5c7O7YvMLF6Mp4U9Re6RonV1Fk5tSbGmpLwqoCp+MdXYJxWXDvLWSyv/3e8aVwx+Jyy6Ag8uOg048AGfrnHfdRXkfDl+k7sv36GXEppl3sfqev6FcEr3Y1oe5ficJkap3fY/tVexHdXuHfV7NUZuwJZXZriV0JoyenGsnYmnJ8jgqeddM0ZFFHDGVHFR72K2xtWHwDqPV8RSLT8Q0G9/YVOsYiJD1zMUj64ZJasMSnv65DSs9I6X1iHhU5GRq1I6FAIJDOXuFA09+qPDN3XSsPY9Y33BpPjCS14RuS6kdERmSRDfok63wbgN1FubfhvvXu9Ot8ocj5uvsIdb0Mkcg15H1232pXYiW7epjvM8Bb8dMlrVjjuU3hbg0vbIuTBUfgiRghNTxvqR0SrxnHnoYYL7pH536aEd8tbneM9oYbNdBLm4CSY8fXZFbm/DGHe+kPX1RxnpFWDLRuOoW752mG6ndulUyf75d8m6BJfvj3mbnWu4mtKXiT3L7xxOG/pbUcgPmGP7pZCYDIe1Y39ND6RWGwIfEgNunD4hje6YeQPPFUt7FVh59HI6FkM3vSbSoW8hje+yU8p3bTjHCqjtWCs7yc1A35AudTj7fuE2CumPqryULKDY9tU6YMiF5tx4tm8fJPxcu14q/W5/bHL9dyTeNEjEWVjYXou7u+dRrae+IBm8kmKJDhkndPhNfDgZ+VBvGiKEZP+GZ8IrByJZVnu7nRUs+lhrPjlWyAxW0+hSWK/0dVivl88fg6OBMaVKyW0/OSWOYXtitp6eCp0BSgX3hKONAheeIWF4UcTR7Nlueo4o4r6wfkGJT3a+2n49vhFpISQN1GXtTSbRthFevsvnxa7mQ6Ag8XPsJkPK14NLLBl+tcAcy5sNLpfgvNXveHxGo6ReNELHQ0kl6q8PD5d/XhziV9S9VwBRbGBz5169GjfVvKHwoHqNfAefw3dwAb3t+1JPJ+2XEUIJeD3c1QfFHmOLxd4s7lUTPDEFL0W9XjdfsYmX89+VW8+xptPKk7sl98O8fSn3r3idRtCZFM07qFnqOPbOQRmxU8KQsH4Z+O9Ofivm3s2Mt4Ygw/v323wpq+F2IUA6XdH1aUq5AAPbbm/JvqY8FCCyhUnn2hV9XcycanfqW4yTdGOVvlO2IIpNnxtHKf2y7q68ChWIk1LI8FYEPihTpG56WPWl4rjp97Pk3dbhtyPZ+PJtqZ+aRfMbvuZDCPqM9RfSST5V2jmd8+Fthyg33C859GfsymgYZ+b+2J9y5Q1myPsr9t+zTR6jvnt33LDwEfHfg7neZhB5kVPt8o+6UcqXZdHuxF7Pwp0b/hh9y/fZ3aGWL9q77d1flOF37L+UIq/ssivuX7b54lq+pfT6LX0C/j96/FTu9D3vz5tSl/lnvBugwX49QovcI57y32r61lh++56ERX6OI3c7zxjHTrv6dzVSJ/mnrf1HjH6F+1PG/YnYlTz5pdcIb39L+sSq9up9yhIDvIilq6lcrrxxF7217ZYZ8k/aVHGlf60Ex4b/ZxEpE/+v4NeMejXy/p+K0GC4f60xD/wRNf+TmMu7/t8l7a/6JWKnv/v4NU07kgDZ121Maoe5jqsEIPqywcQLHxVf4pVK023hRoIUmOx4ArBwLFRmOAKgDIoWdgipDHYxlQDkrXAOBtIA2vACckA9QQIDMrFxjw56heHVKsJoCmAm0tGaumqsMXBEhmFRCJqwWkpxPoTyhGrYKFAMKmHEgaZlfbx2oDwmY7GvtgjScWQhkA4plJ0vbOBU5NemeQNUI1kfw3uBhA/AKwCEbKTHAFajUgMJtGmZfgaZKA+w0kATAwhDMDqnOMjwE3eN/C0NbuLay0hWITg0tEmQfQPXVTiBfzJ9K5btiXx3mAqQlcFuNJwE97XZT1rsnXK6VZ8cWNpnMgVOCMlRQFcD7ha4MJRwgpY/peIM5No/DIMe4eUTCD19DKGHloxWMW8CSCHiBeAppfwOyTyZQZL9GWdmMUiXSZAUXgEV9mMYRHDhXpUgJSCQCFxi9R7ZQyDO5Gg0ZiJRdiJ4G054gusDw5KcY4jk04gkoJ8UIdLPjyC9UAfiJxL0FYOyCBfWYKq14g8lSp14Sa7niDbwCMgpQR0YlzGduvJII2CqeS4IggAUXgxh4WXXUnLR8eNXypc+gpIMrRhnYph8lkIBf0P8tpUGU/w2XFwTd4P9QylJQHeRQWQQmoN/2WMqGET0RkZuaEMEpQIJTAhCOTUEIMhYQjCEAD1xc42iC9wHdydJLBEoKCQxaLSGXY/LckJ7tI6YyGhpKmf/Cwhl7ekNJJhmWkPz5BnPml6ZmQikK34TyHkM0ZOQgUIZCr8arDuVWQi9BhJgbEykPAkaD4JPBsmOnhTpTaQ9Cb46rdoM6AI6dULtA6rCQSO5ZBRUK2thBA4wFDweQYM0ZhBJkFoVqKdkKZDb5WQFPpuQrYl5DHQyBz0pqScAQNDs6NOjp4a5fRj5C6Q17lJ0c+V0AOh46VILd5AwrAjtA5oEWg1DU+C/F/FgxXgRbI7BEUPCELQ2UN/AWQsWkXw7qFczD45QawlxoCeIiDsEJBEsKSExQ4ZlNDkEawTrAAwq0LMgbQgoXkJsRN0NNNHFXGmzC3Qm8woJcaJsOQVpeMST2Fawh0PPl46BXg0w6bIMPzDBQ10JbDJQhcJOCnaFsKnD0hdMI3CxwnwNidHtP+i7FABCQAD43tV4Q+1rLSu15Ua7R101MQA/5F/MEieZnyoJIBNFZFdTOeRGIXwsp0FF7CbCn0YccbzDsMsRHYk0YwNU8hQgJRQE2GYnwa/i9ssRaCMqYDndpwECQI3FWPJykcnHfDe8dCNvIf2CWx3FPwsCNrBlIBwKIMpYJCJIikIU8zYkKI5cPwFaRciOfDyhUIXoMEIuiO144IqJyJ9GTA/yFdJTO31qgHmcFmVAP9dxgmQdman1Ej6fC6iE9b/a4EBFZzYSObJpI1lQP1xI5SN54eVdBlkimTZV0RDP/JSMkiVIvahnYilCSJPCpI7SKGo9IxfwMiFI8yIeYrI1dkcjAgrSJ3ZdIkn18CgQj32UgHmECAEkXEWnyRApYOtjCCEKIQGkY5gWRmJ8Ig28OZ9LjX6EfC46OmXREmaX82OgpiaIjwN3zWbVQxMDGk2HJ8ovw3x9XfbKKatjiLniFk6YYg1UcwTDsmFUnSWkV4NktJskDEijFqONkTJfs2xMGoy0Wx5mxIiH24PfKt3FFSo0vRj9lDeCwW1TOI0RKi3MPKLmiUDAEzL9Jo8nmSi1DMRS0lNDewlTpqo/GXmjm9F2UVQOSVwwC8HfYqJQNzotLTH8/DCGBNplZWaWI9fzIaLul+o3c0MpWo84gQhVSE80Uib3ScieEavRSK+itoqaOTIqo76IOjbfJVSKilotRB1V2IXEjWiySRGMy0fiIGLo4dVJnVXIPfSskpwkGdHizIfornjdFoWeckt9wjQFU+kTo+TUJjtfS6PuAAQ/iONd7CWiFrkc0FyJaA3ec8h5R4Q8U3sizIqzF/1gKP8C5ipQHmOgo/KXfyrsO5AkNU97wyTUd5Pwft1Xg33R3lN9SKQjG/dKottzuAW3aoKbd9Yjtxl8cabWKTduYSugrtE3Xt3H9SKXqDJ0k3CP1wogJWv0j5nY+2LZgi3FLxTcr9Mt1dcJfKSkQJRopN178caFcD69eDcnG2Z0wNeW1JdYhYljjg3GHy7cI4htzJM1DWOMHcYPQv3pofQZOPxlfY39HDciDIGm28cjI8QgMi4n+GA9PfQDyQZu/Rng7986BuIH8SPZlU/dtvMP1h56/RSnLjPvf6E1iAaN2PfYQONmhnhjfA7lzjFKNWIh9YeK309pzYpuPOhiaY2Knc64qSHJoC42Px4ol4nnhn9cKWeNy4DuOKCQ8fQH3xPiD4z2O0g+vK8Stji4+8XOtjSJOLw8GrROLTiguRWAXpz4ob0Q5p4z2MCBw6LCURgR3bxV+ivJL+M7ivYg0j/CHOLeJw59YEdzXimYniJG5bIwENWNJQAclgZz46TzXwRYtqlwT6fMuRv8P/CUBY9sEwqhng8ElTgIT0wGaHxCVPbJyJCH4HnjGZZSa5VnpK4tTXOJBEN3g4lkeRkIRlQUEuMJoQeMBS4Tj3K2kQ1t4SRKV4iIdjiuRvaG0kmpBgl6SuQ9GYsjYTho+KD1pFFbRLukB0BsPC0eeNRKzI2kItzJUFEl2XChL6bhOkTe+aMUChMtcDzTwEZPhMy0YPTsJekREqdwUDSNXxOA4/uQGJ0Q8PLYl4TQk+8XsC5zaMUFMwqWHn4DzEtmH9iaCNQMnI0xGuTpNlpej0HEl/CUCKcqObCnPJamM/ziAinCZD4Fik82Bljrw9BJZjbqApO2Aik6CkQDSksqib1KklpOXEakgAxvCmff4R25kEKRDsdlIQXHhNb3f/GWVo8Ih2rcGCQ1lDwnwepzMIhksBHmTRkrHj3dJkp/Ggg6AVsiGT/GBeFGT7mQcmrVuvBZOtZXgT2CGSs8H2CxNTBIvSGTmBfPBogFUB5IkE6AIEiOSQLK5MaJNzYiSqovTMcmYw7IXfB2SF4tWFoxz5fPDA1ozTd0hS1kxZIl8IU4fGu9zk27niSs6MUnOTdIcZIDh4Um8W7w4odN3xT88C/BmTDoIZKVMGFBXm5gxOSlOUC68RwQN81YaLiwhSUlSIo9befMlDwL8TtX0S4CQLx5SmeeJMXxjITNBkRhU2ZOGTd8XlJGxv3LZKFTeeTlK4Q1kplIIkVkqFPTwL9QFIpSFU0ZPuSwYfZI8Dtkn1DagmHKoNWSbxWjF2SlyElPTxJWD1GRS3CSKSLRmUqoNDQsUt0HTQkUi2SJBRmVcC9SlUsEnpTuKUPBa4+U+VLyQIyMNLJ4JvUVJtYY0oNPlgFeY1MTSlkxmBWTllV1PVS5kq1OfRHU31MtT88a1PBTC0rNJfxEIMchTSRk5jG+TI0zvHFTGiV5MNSEaaNIlTlBdN2EEGUoVI7SolIZI3w0JJtJXinUngI/Fa0y5O/dgU1FK9TjkoFJVS80wKAXjmY4TwaTFUYiDwZWcftT/1djVvBKFRXCVPQJwQ4hNyTBYsqha5ScOIk3TkNPk3PT90i/T/Aj08KP384o/pKcsrjRDzVoIRUVCiVnYJ5i7gv0x2JLJZHd0kUi8tPRCVB3uRSMG5VKXMLlTa1cREsYTqODM/UriEskgzKTNuKAyV42tVa4teX9JVicMtbVFJkM3aOg8I4cRAwJARJGU3QCYXHzNV7olxOIzP0xD388+SZDMMoYZCRAhgP0M1VxQetAuAoz3VLi2I8EYNqFzVcDa0kaRv6aHkjISLN2SkzEMA319VhMok1gzmM96Fc81MgsjkzJM5dPki85IZ241QgbSFD4zPIzOwcFPPfyJgT0g8LmodPc8i30djTf0GJDPczKJTo+MgBszbmInn2Quk4+Qblx0eQGbF3M4hM8y5IshIMzfM8sX8zneFzKiz6VEzNCzLhfcO8zF8XzI9MNoYKNQoFXOWKYSoglnz3AdTdSURYaIIdVVtfxGFn4grTKsNxYLDFFkJcACcwwq56skVEaz+COpzTZJbZXxJYPPMtklsKABii2NPZVWyO5GWUrM5ZVbIlNTIhDTy1TN9pHliGzaWRm1pTM2XrOzNXQHvDlYOsglkZsKsrbOazFWIrLazjCE3GGyjs3FhxwCZbFHOzEWaPDAkGsi7ImhSXW+Te4Ts7B2jZGbVCTIMwNdzVVtIJSEmQhJDHVgeyMWd7ObNWs3Fgvx7snzG6zdCaLkwkBA4hhNpjCYQUFkRsh1RqVhBWWUmyT1JggkE3VVWwRcZDfHL6z2ghbRRzCYHNh1MxJEllRzOsg0PwJ4cm3QJEas0HOrNjTWsEhywcr2wZyKc0JgyhqcqVThyDsuwzJyS2BXiuzCc9EIREaZaOhxyB/CnLdA5cxm1GzMcoHOth+s5HMmNGJJqxhyhdSY1+yQcyAi3wNtPTIiyfAHUwVgjKa9lPZ6ICSFXZhBSGAmMYcvCAOlj08LLySZ2Frho9exYfDtyV2C129zrcm9ldzGEyILvCWEpVmDpxE89QdopEYaJNwVNaj0p5YOI4zjzGaSTljz+aFwO1U08smhzzm+LPMpC8kZmUTz8aNImcMUOTdPJ4yKJTF7UIKGr1rzQYqnD2h9aNdONlo8MLRX5g5evPdRbOMihBpENMDVG1B+DPPA4YUlxI9dDwQvInyyvYGjJ1TOTvIS958qrWB0k8hzDjohZE3HC5eKDiCo0qcD1C7ZLVDvLvRnDJVkaIFtWDgbzA6Kukq9iNI9DMFbKZdSLzrBZROVky8smj7pM86vOtoh6bYTF0vNHwTxoh8xDCATBhSvPOJpk0mMXpV8p8EG0paSTMlk2oT/OALHEvPJQTsk2KLu0xuFLL8DSwc8ifA3c94AvCluK8N6TGfUTQjyCs1hI7hRGCynbE5E99jARs+T0Rgkped9lfDEWV0EYKsRGaA7Y2ChDkQIucL7DxY5ExDhMFa+BgoQTSkR8SkLvxEoVwErWPNlglbrF/iULNEgKRO9MJT0SGiwpLQsZYRUYxIbg4JTQEtYfMO+nAkFCwbJ8w7Eyws4KtWBaJk4hCliVhZ2IMr04lTClfFELdOWyl0lvCqXhD0ZJdlgEK+JHyyCK5CwTiW0f2CYEXY6mLXmm4PjBKkdYNaMEgoS/Cw9EyTzUxLRC9cRU1DELkBNQryKiuNLhIp/CjAtJAGTNBK8jcCoEOU4CkBdgv1ZALLIrt3ciguADI8gp1bg5FFi36VOi2qG6K1NH/AlgloAYuikDEVTX6KLFYtUnlaULoqmLzYApEJxiUSYqfwO4OIXuQfNFYtDw1i5SgkRqUE+TbxpMvikpgnkbqwwI8QC2Wv5vwICURsy8bjMWKF/cwBQA5gdgCgAUAIgAuAnir4EMBwQfIBJBUwb0CEAnil4reKiAb4sMAmgBTXyhmiKqi7pugSEsVEqiWEtUB4S8P2hKHqXgk1BISrEXRK2qZEq6AIgaPkiiZGSAAKBADS6WoLXDGwubYfLCbMaNMtPkRg4qStTT9ZjHXuFGNXgDtlgt2S6kRpLjzHbOKY15Elh+BdNe2xAQtcxQV45LrZCw5FaS1Mwry2WSNk6A6SxVBmgU2ZF34MZjLPXVFRS120QgYWPfk6zTUfUrlYQIdYhcNJbTksgIcxJbOpLEWP5WBy7S60qBRunLYlxYwMFA16NXs0iC4QPs9ETjpjCBOGdZxRNIgsgAch0vqgjAt0sRZtvIWkFFeSxFlXhP2eMqtBtS/WOVzVShbKTK9dewyUwFczCFbhnWS6zzKI2U4tbZcytUv4IgJSSkpdUyzNljKqcvyk0B82LuNJymRcnILK0XdbNspK2TsrjLVbCS2MJqyzrKdKqygIHLLRyocsLKBcnzHZQfSh0xWhCXD8BJZ0yiCDNzPci3MacPoG9nTDpjRGG3LT2C7wDyn0khPf8Ny5l3YVtymHN3KLXPyihDF2M9ntzWih11fS1PQrOrw9obCG84mIcEVZwlIBkmEFtIQURNwkMCbUXVxvMs2ndLk1Lh00eHbVONhxSRdSAqWcu9HAgOEiQRvRyRGlMCAXpC/JTxaRXwTCAXZMTBMd6DQiozMsMROEdMh+HCqzI9MVL04N/8I2A4Tz0mNRQrEiT8AI4uceMygrtmYdAgruRECv34+ONTXgcWzf8qFkHMbit/LDuMmC/K4OD4xNE9zCSpgqBKkM2fQiKn4mEEBK1wxeT++WDm0qxKvSpGxeSWCsgqOKxCtYqyHHZLQrJK48AzV1KzRwoqK0CyGzwaI41HhNTKtSq7M2oYitEqeHUcSQgMBMzgYBaFHys0reSYSwkdeDZirsq8yuR12IEoPipzRzkJIwGDhKyKqoqKLDypC0QqoR2UtPIXGJIrHFeC0KqsyRokvI4LFdzIEtKnsscdfzXDErSYK5Ct/MRkaCoC5vKmKtsrVKoyo0rnKwCpCdAq0iMnIJBH8vXLT0psT58CE8wk7EX8AuQIKDIfmP0jbMhqsyYOY0VNmrDGSWMPxzXE8vJLCQykq6zNo1DEkS3DBjlg51jTxNzK7KfslOrFUG6pj9Tq9UMWi5aPw21YJnEaPWjWs1aPIgNCgcsy4oY1Um7KnISkmzIjCmOxC4/SCwsJdkuLMmL453RmydZkYy6ubN7qy2RRrOzKsNWjVSt6vfA2KW6pMNmMc6qhJxsZ7PRwbop4VxqmQMqIQg4isOwbYOEzkQGj9pY2RZ0ueVw27wJyKGNJqOcvGHA5KalAxpSvfT6pRIdTfFkZqpEYGILDWa7LAGit8Kbwv9wjeWt7V0RY32tN8a6IkRpwRdwXRrg5JqyFqHnE6r8ML9OLhJrTqzmryjFUDGg9MFWXKorz0okCoZjVa8o0dqPq6kRvd1K22rajbCm2q5rFajnMFQiokCGzokjA2r7JsyEOtUcdahqMVMlavGq6jbKBGuVq9Zd2t5hxqlavDToWc8GgoYQ1dhFQzmCSCqSAIJarsiM626CzqHMvVDzqvRE9XLAKFP/UU9n09U0oKEo3JzEU3COIKZysYlnQOJHksJnIUzS7D19TgeeXWzJGQR7kXwemQfxOxe62XNF1IAvrFnr2FRILEV18ZZ3/wkgKnSyF3nE0y04d5LPCp5d6ovWuVosYXw3qdKQ5RUwMBFZOUx+oTX2QhthfZIUJWCSPSHqhk0Jjn1X6ievezR6v5RMQPuaLn7qp5UgWxoAG2+TFJYMJFDfqHMIBoL9x6qni4wtOSBoTwVg7IgRiv6hBuaz0G2yjVBigjoHiod5OfCGDl64nTGRzaHoI79IysRRQbbgn+pKUMGsxnZMw8fMiPkH6uILyLAvQ5TMxe+dkxGtSGsyFPrfuVLD3qxFA+sYaL0VZKiU7fWUEpJ2TIiCuD26u+Q2I5GhgGPqe6j7j8pN6xwkHrHuDhu7Ix6t+pOjuKHeVAINGuhu2UO65RsGcA2HeUrxZG0EX9Sd5GonecHGljj7kFCNLXZMAKIPx8tmIMxpHr6GoPDhozGj+peUgmjpz0bJlKwz8bd0q7i3qo0zxuEa1G63RcbHGNctQSGPM8omrISkCFiIpTEwUfTJXc/xgpi7fkwsQ4Q58rFNlqulRWQEqVEIKaMQolVqbSmmEJKsG6qzP2qFYjouOx5aNQlfIIfHppt0gIAstqQssfnTVElVO7itt0SAsowkCSNIk5ZcRH0FqCcmGsqnKTwG2MkC4yi8AhjAMyQNFKdm6QHUZMZYpgOaJIB8X+JimbZvObSJA3jpg1m85owgRMwJkWbDmt8RYppm40nOa5my5qH4otb5qPNfm1dxygVTFzR6bbieyDWK+eCUPNLDm3UQIkusWFtmbAWzkgAEo4ALydhG5CLw8pnDBrAhbDmuiEVZduW2hiLJmgknlqYywmGZ5x0GZuWanYXwWdoRmpJj0QmKymnOa7JZGX/xkyw5qKx4eLlqPobm7pkC1WW4MkebMmbzRpT/m0FsZlGUbZgBbqWiGkhaqW8lsFxWeb5qWVjuQ7mxa3MIb0N4p6XhHsIhW+lp0RRvK8Vi1zBbVp8kHjaLmubAVD2t25FWglurMxoNLPRJzmuUGnz8YSVoWJzm3lsxkRWjAl9bEed6TQ93Sc5uAlyix+l4iqm0uu8yNsghJ9LAgALPwrJYxNuPL+XO/RjaMEyU3u52YjdnLjk23gigpOy3jUbrcs8PNbrkcb1HrMMeNKBl17VQOI+462i32+dMgvhPk1W2x7mbapeCokrTL+cqnbYEYznjjl1YQdqjFReTIO7ah2mZwZ5R2g3W7U8arznVhL0LGNV4Q/NWLAKdqq+Mh9RUAiSHwnzCYKhxR/LfAnTLScqgzYUCIfETNHuK5HJiF2nVLPbb2zxIFxm0lgWXbKWKPERgR23qBc17cev1Ocp2qMWjx1eQDrFwzU5Rp/bUY2CKOD48Ib2PUE0a+o3a3GsDQQ6YeVeFejdcOtMfbuWaduOd6NAdvraZcVDo+522ntoHNIZJtt9ZbfbFyCpKOsdrD0vyudt/a+AJCCp5YOrGOMzdgpDsUUXcLDpI6mBOfVCBT2/jrbRidTjsfqjEyePplWOxhvCgN9BjvV5bEmYJ8cQZAjvk1yO3Xkh96OwfQXi0OofmU6H2/jorY9fD2TvzyqG/mj8qqaONk7i4T1vpw8OrLi+9K9NVFM6qNB7w90DOvtrPb2O4smB1dOujvnaw9fh007R2mXT3CJuWzNQJsQpIGaLrWSpubr2iw6u7564KOXwarIXMsjUGSXFCEjLrXnmRjIQ7sQyNhU5KoK6M+UYwipEK7LomRobKiw4SMDca1UctIRMxekIDDRFGcQ0C5FS6OrFkXsMCodjloNAgIruqEGohIwKsUyzQLulKot2xDLWw4JqJwruAfn8MiHZKt4MTHbpzy6wK1bsK7iyzLqFko4qWxNt800Gu+NaoJSp5Rdu1LpGsyu6Kk67gQtbuwCHMURyFJAUK7upsxkm6K27ru2bomipugsRjtauoWVG6whRGqo4XZNI1Ag/o4QQqZw6gbsKgis5rtDlwgS8FDqOu/rq9FZrAQMaI4yYKqB7GK01L1ldiKkwltMWW7qtkGAcfnh7GUSWQW7ZRKHpDpqe+7pQr0UlbuXqyurfHQCcZGnu1rvUimJO6KetVNxjCeiyGJ6pUImlS7PLYHvlqk4VLr4gMelCo26vZSnL/4dTZnoDllxQbpQr3+GHvV64e8oSp7ONLVVyMSetHowh+qbnuUECek8hatxRLHtwbUuy2MaFqc0Hp+IWLGaG57hulrqObquy3Oh66ZUro5zVey7sZ6dTBXtS6E7bnuNhpe0GSVz0ugXtDkHeuCzj6uuz5kgipeimJsMze+Xo57UuqawP4Ve5brV6o7eiHTqoGMWogda5HzTZSHctiQbodmZYBsgS67NuNdJWoPmJQ88avpbxtqtvulQw8+KIGTWEgYNBgWEewlkB14uNxBasCNDwDguVbDwLKRZKd2coQ4Efqn6p42EhEKkGUfpgTM8UaD/hl++8UX6GIPfq37/ZH7yxE3SmMixEaYIL0v7saEj0/YCycNr3z9ErmAA9h+u9BDoSPW4mv6s+Y/sjdd+61newbuaHkgJlgSLD2SIYNftkJQBj2iU5y4u3rn7N+8iUqIUuBAZX7xC5DHe5UB+Qs5Z3uG5sQHLCnCnJlw2runiLlgekgSpfWw8B65QBstB5a8yk80lAXkLT2TJQSUIrLJ6vSeCVoLOOosqIzsPMg/6/2SGTYwlQKgdSKK7KpEOav0MKTVjaB85rdliyOosgG4W8/oo47gJgbf75+yIsO4U0Q5s0HQig/uUHYkJLnERa4G/uQln/UBsf6LkWLj/6eW0Qfskx8f+vdbwYcLS91gBw/vwo4aCLkkobvFgYUxGBofsObiZNgaUH2W8YBokZBlAegGnC61gkGCymGX6hKOD9zHLBWXzkiHisAssG5VB7fskKkGW4Ai491ego360PbwdOIPMLAa0GDBufvyHjB/+syH3WbIZP6oB1sMywpJWwfiGAeRIccHIheIbAGD8Nwew8whwAYy4yh18D8HI2yosybc7CLvJ8PKbOp9LkICMBCC6fPar6SW6/vrOiTsNQyRY9mWUWTJNYnYYIipERA0XwZKTETloZm04bujYwUekOGmrXaNRokWFPETcKRVnieGEUWkTZEujQCo9q6RK+PlZNKTUSCQ3hgTAGiHhgHP45norEXGTcRHlEMY9hi4YlZg5a4dH6ZDS2muGkgGAzhH1o5MhVi1CV0AbwcFHVWIgsjLOgS8V1EkbtErhntu29aoBwqVoyY/4dZTcWldVDRth5kaJa2fGEfZYxeW3wHQkMYVnRG+R2THzZsR1GLENEDAkbg7i6UkfKxN2pxN7iKc4ljn1BERUaRZEyYnRlGqRkzCk6JR4nNjAxfcKBXjZCLfB47+R6zUmMzhqMTTFuRy0fl8TMR4dNHpfYEbIN0aQ0ZARvhnUej81JajnVHlKO+p9HLWC/Mwz8lf4bEx5R2xBBGrQaUYdGIRuWl/abR24aFGJhnJI9zsm5sQ7M5jbvAVRZqu6nE9Ac0wUb76khSMy8LENsT0wNAXMeLRNjCsdblVhtoopLEoie3VyLKD01Ig/DJ5AJl3VYUzVqIJCjuCz5O0ED8Zv+YLO5gP7K7hSEMx+trXYYNKcb8M7gH1VHGmrfiVZ4Bx9KMQDpVHsfKMNxyEjbGZdPJySZdx713nGWx7sbxqTDHqjVVjxlA0vHY1FDpPGJxjzA9MZEZ6PCgC1ICDTN2dGay7HfVaCAw68nR8fPA9xvwwgQgNYCc9LEYcNXAj1oqkMdVLs4GK0hFx6CA86HrWWV/HegmIzsZVx9UCRiZuzJk/StxuC1gnc1YzPSjGncNSE6uAxxljVrx7x0AnfVWif0d3xhiY/YqJpXN141x+gOYaSKZsXJVyjWrmN49zXCacdBJqzrbibHH8bTMUJmxxDl0JsPGBiqxGmA/HoJ0WvcZ8NdCfbHoYEvsrkuDbjUSrq634C2B9JmSK8ydJm0crqsITl1jA9JzPA8jTJ4y2smjJ2ycDzHJ6LIjBG6zyKzbixr3Ncn6VU/VnFdJvzPcm9/TyewLSfGovidFYXdxsmzw4gqstUKUKLILfmYkuijSS6NoS7GxtuvGh6dZrl6RHPAg0M5PPTkksdmZBXiKnViMfnA5XVIz0GIUjFDjKnzPOqd5JKkWE0qn+uFqccoZ+RxNoxGvcDLI49ZWjBC9vNewmbo00WqE3aCYagxdkJBURnC1JpvowC5FvG2C6n6psLFq1v6ReoMqYkB40Mo+MVaevB3CgmDQN2p8qb3gAjQqfDcXgJSdS4AES70Eobpu703cPLVfMdyi3ezU+koez7zc1e1aLhesZyb6b1kt8GK3XhlycHVS4mIGMmen/8hXlh894aVFS4OpquG0MRqvKccohEffJhnk4EXSy592gn0Jxz2zaeanTph70ZQ7KxGbh86aXKbYQG3GqA9oRKpSDo5R2omlM5fk/2JO891GCqWm94Y6dS4PjJ92pQ783GbniXLbVUxmKZmPIantSO4BMRlZSWYNIiFUqYCBv3UKxenx0OeKW0Pp91EnjyqFadK4/p29xVnoZtaZQICZxWZvR5Zt/mGF01R6fFn+Ba2cwzR2vac5m3pqXEFnPpulPZn6NCDn1nwuwy0i6fwXxGgot8YuWWHLw+LqADMpqtugh8Ef0XYMzMenE7VFDXJSVw+sVI3NhmoIDpmcYWQnozmS8VmiYJKozOaIcAcqONvBAeMXVIi2DI5uMgpG1nFBgalFLzuVP2/hzGyTyGzDfVK5mIrqcNICjWLmPWDz3gUBdaHoLmNYKDqzn9s1olt9QzPjAkNJ5hGOQmdcWedgg9faOZS6hsxkCJHSwTaC8KPZXOfm7QhOCBmzsLKMRY6/GoQw4JBOxdvzZ+IObBc7JDaXvPngJE+c/twxYzNlBL23gwPnhmxuf0bP5xeaEMkYbYJfn3SIQylgTO++btFC5sPSfN82HOeo6fHAHLgWEY8jtbm0cMPWdNLWOOePj7pTuaMM55qMWvMz5pBYIXx53QigW6g/vjdhQFpRFeCIFnQy1kTofoOAWu5/GSbnygoipAWBzKxUpwMDB+dLAfEXzokyZDUrOyhaFkC0qz0523wmJmIIAl3mpFuUzIMRF1GJpNOu9eaxj7ZbebVEuFtxo0X4Bljvbn45euY8MP2KqFoWCxRRdYX9G6Rfp6hDQAmJ1JqdPn2y7Fu+qEWERH+cmVeFyBZMXRdXFA4WWFzWBsxtJnyKbSpwvFQQpIYD/SxyfFDdhlkIl+LsNdzc5/XyhQlxlXYU4ltSMhKolwCBiW0lnpIFcGxg6qbHQQXgmktDeJsywd8Ks0wdbh+WKy1VbTY8nKXkrOpbrCjeeMRwDYQzoWjwalwgI6W3Qxpa6s4wlpf6XmrSLAYsUZDeHoDr7HsyxlTu+gyfhQ0CirhlwhiW3mXuFJMKOa5e5qxTxpl8+rh6xkFExbDLTYRz4D6ltmToxFAqXA8U3Q9Anoooy8YCQwNwtkeVpRje5fAEulwrqMD0Q28wdaNsTKwGz/zG6VuAESS620JFl07P+kLS9m1sVJwp5cRyTlmCNaX3TcmzAQiwqHO96ZjO0Af5wV4FZVztlra2xXjIX2fztWTQu3YIdmaOdi6bLWWM6bmEyku9Jlyk1JMdGZwmIDSf1T4wpSkGK0vTwwNbxGWTOV0FlGSHVO6Y6tzkqVT2TvFe4EOSqqa/jHIlVMnVDwaIbBCuSv425Lx1h04WErKFVokHVWjp5Ja7g7kpVaxm/fBCWlW+2vuCFKTUsVYK9YEglMDVjOSaa5Xzkk9Xl0CYU+Mik2V1TLFQoJQwlxSEYTWAFXr1M1Jth/Vm8QRp2Vm2Ht9MTSZJn8I1wU2pSw1BFqKUeWCVNVUKTbLCz0U1pQX0SVVvvDDX4kn8XJyJU/CvzXdTStkzW5Us2BFWU15guDT+V0NYTWTEutfZShIwchZXzkveweTvFBlfOSKEe4LOnHVwNKzXsfE8gFX3ks1JsoQ14tMuX1pkdYXTYQ7L0LiEJYFIQ7qyPVZnxfkidOrIwy/EzHX0mzAvSmEl88rZMnkMRlGT4dCpoyXuZ09Yv1QCRpvrG+IldPyTtLIIDPX20PEOd5yqGzDwYb1s1GCnqVtYcS6mxgmkaV3XL4aRozETyVIo2Yl1lCtupKDYdGyabeHAhn4h4cQ3xFKN2g3MaLoslo1ipUMTYZ4AtXg2JLZ0nTAUVrNzopxg02hcttCn1jowxaAjdA8uLROnjoRiyWkmpBbGDfQ2caSam5twNvKEYlSKAE1IDZaQBUTihNtDdCU2aHjdbxyBN+XddVEvAmcgBacyFrIfWZCzJorDSDbU3LwDTd3lkYWjbltE2aeXzpDKQzcz4qTT90+ivLJPkFQX3Ggm6sr6TTbZoKNz4mo9BTUOm/oNEbelccX3MDfIEarK1Xg2m+TPjPZ86VDaLpsN4SnC3y6UMRo3MN5TZf4ZWY2yVZimCyEs2ENuejI2dacTcy2VNlfB9ZMRmunpC3nbLZqxrN3axYKDNtRPP5kNmONM3qtsilE3IyWjYytGttLc9p7N6xMH5gnXzcJpKN7rds36aTzaaZu8izc9o/N7rehLmt+LccQBN9qnU256fopw2Mtiei4Q4tyLUz4r5VTb82glgu0nE6EhIwIY/learapDt+JdISj1utwGzM5V6nfWMl3OkoS2qNiHab/1gpa6a6V4lDQJwBBCGwNZi0X3qFvMchQ2ns4PAQb0/ttyjr4l+NVG/pTLYxkCAPaWYooRKgrZr4xZi9EKmJVm9XGBCtiWnRyZ0Z0YL3Si+W6CJokg/Co7JMdg4KDxm4ZxhSMkg5X22EqmbQySCl1Dvia6vB+OQh3jGZDdHq5fBnYgRAdpPAidJIWASadRZbTU52mkAXfB2Qdxfnx3VNFnfiFJVhGMscZdrpgaE6d0nS2sREnxbyReRY5Fp3QZbfAA5pBOXY53Vd2RIR2zdjvjuB1dzjWYoIbX9AEHXpMW2BtCMc2lJ2iROqzVjGUJIJPVS9TYsgEeFrhFVFg7QPbR3sKL8skRoS0fX+h0xTm252SlGHYStHdvduB3rdxIH8Hxd83dCTRdJPeRs9nYnVj3v0ZG3c3HCCGAj2vw3RJJ3gQvqyYC0xGBCkaiKekXFJ9EBvaYWY8Kfir3j6oXYWEzoLHdel7dzmwL2XFgRuz34d/CF22BI+6NaBdmPbEKad04lBPAZ9/jlVIXt2pIfX9M8okDk3IufbvWimqIm32TwlfYvWM2wTze3aVpsfUQXUYoUJbvNcKFu56hU3rwy3xwvzwE/GMwkkQ/AV/fMYlc9rXv2hIZxkyYCvfkYTs7BUEWfgxoYrSjsc+QZzjDLkXU3CAJA9ET1pKYFmg78GmaSXvlOEJLXJwGmUiQvlNi3tGcClzAxUmt7fEgX0lQFHzS/3TlxCcZpGkE9e/2rGd/eGLyscg8f3jafGFK1Y/OAKu4cFT/fuYpmbLE4OFEGg/iFMDrCBcgX905ZCkGw64qOamD2Q7tUItMZmmWn4IA5KQcDlJkUFumSA4y0qliAQKY5VAQ6YOXzbUPgOxDypmK0Qac1JMPTlxANGWUtBQ/sPPTWhRUOiD7JiEt7lnZFXh/uFJnihQmTple9LYymzYkbDyfZE99EBNDcjJIPfZ3Soj90iP270bKDX3yCjfcSW8qRg/d5dmWI/8mbyLI8CD64O7dP3wgjKcKXcnXhy4SXRJLR/M5OhkpLFDAyo5pL/E5cZaB7SoEXZKbdmkvTEdsqHH1zJSvrO3gNCl0Uo3xRDRKATqjukuf9FSxQRqP6DIxIWzVtJbIHQ7El0WsTWj39blYN+TrLqODSjo+DEmjxMpMwlsrBCqPI2IROuzTj90udssHKUCOOdA8hzprAy8rA+yzoAMp9K+aAXLHw/dc47cTrs6Y+mzaRzrKuPKWno7+i1B/AjNFmzQREHz8CJMuVyYT5wynKiRWEgiPcqQQKO5fcpdifKMljE72wF2a8rvZ71rycfWZ2AdAJ8sTx8vTbtXck/xPr2Qk4b7w5+WIv226g/O4R/RBMy8ti9L5mFZq8F4g4kW8l+AdZOT+ebS5bApFiKwuT49X1KZco5p5NM5qoXVYKcj1pVsBcIRFgCkWOiEGCE59k7UJ70zWB47oIXU7ezg+TqzVPAEw+brmiYBU+kQQF/0xZDM56/mEDAcnxGmsndIU5iK+Tm0KWKZHeHzezJT5BYEawxfAhFO01UIB5P+CUM7D0DEDAIlO5yQM9d0XGCnOEQlQsPROQPWbvB8VOFdUDt4albvD4UGBiFFtPPTuU6lO5iNeS8LQzilEUILUQHIDOSFms/4IFeeM4bPkloAhNN5JwXbFPhT82EAhOFcs7FE3sjZrGY0TiUG9R8kZdgaLWoUyIaJqvZpKRYykIsdJPyiZjAKDC669hhSZz5/VdD5zzc977XyxWPfKBuaOP464aGStfDlnDj0QQPTV3VxJ+TDdDK7q8AWD4r7zyKkgqTBDpyvOZKzpGacE4V4nJFu8I1F+4+E27kwtu8CuFOcjEnFPoNwLuDMh8dMQSqIQzuWRIt71Kn8+54bdvLvUqPz8Ui+9KiHiu8R4yB7zfPEL284m1iLgYQyye4OF31jXBdSo0QTzndthIlKomTNSPuR2hIuCRGiAgv2Ln1Hf5dKtLk8aOLyi858Z/fjofOeonC97rMLv7vnF30Gi5Nbge7i7gudZj9D+iZ7Ptv47saZ5Y0u7z4S7aWBzjpzVjrz44jwhEO59HuYmrdjbYvIfOmkJWMm+yfidTNtl3igiYE/e1dnLh3hZp39c7ayaVqhCJcucQ3/S5jYEQK/h1CmstppX8sy/YqJ8WzorJgxfJtNWj7CRwkGm8oykw7bcIIqIyvbfItDKiUrynFrG7pDuCbDy58NMtlv6cHikbP+Y2X+gWQyZRqu0eukYRjyrkbtwgy3CtDWa6gzXiTw8riaMmobQvX1dUioyamF4oxNK/y62YeTSSusoga9/ase46qIo3LokezHkrqa9t8yU2q/WvgOIfGVALonK+na9rm6NGvprqVDKiiKHq/fwuriFHknOFTa7R6lSNUid0CuE66nnW4BmNevRT09uVkaCRSRGUccYYjV6TiOfWghgy1LuavM56ONyr6WJv2lWGYuq/taSdbls6KrfSztag/NYlASuV5hXHSvboJQjxHTOA68zmYRrMiJutCVznivHCavAK4hea0lHOoiR4PPJcRpzOKbUtpm5OxLM17fSOj13VC41oKZm4/02bk8PLOlzzfYP1Gb4W8EoP9CW76KpPJk7yyqCopc82dNuvB+zVQ98JG9W8c5N1JTyd8N8g8CNFMWGKLVPCS1sUpAiqrysfq3OS5lA5V/MM0OTWtuZEaxTtvzrBhUIL+Qii31QxmQ26UwKLIyEatsUzSnJEiDFHDLwTcexDsMQ7pUKFS8OR+3Y27bIVJdgyHLiwYAd1j9nlC3zKRCOtGU7Bw9uXohO1zXc7nh3uiaPANJPaM7jW+YbT5VXhEOxVWXskV/8W/GeXv6eu9klw7uA8rveNwO8fBVHEu4NvRk7xmNuC7j8XdueHXFFdvVbou/dNeChO4lTRmU+y5gAKfVfLvdbiNQ6spIFNaSpzh4PCEVN7j25XV9b84pXu9fV8hEZ11/GXVv0NKu7bwJc8w7dFNb6u6ObEaL1FPvxgoVLnIJHBCNDvtbre6jFlmru9GSgmFMawLwGYEteL3iz4pQBvi34v+LEwAoCBLni8B7BKjACEpXU+z5ojx1TqZgDnEDQw8DwZMHt4BwewjDIg9dFdVErI12IQqmL5TqQkuISUpmKKWBksmYZ0nwwvB4k8yeARiOlYQPzyJg6HqRhJK5GKK8VvWTxEqcYXugHl86qQU60BQqrmRVKRsrRfYfTAmiSAUf/od1jCbwh0m9vkb+ctFW0AJc4nsIu6O+u/gEpAx8FDgVsRSoGs8Mx+vF1WI+XMhC6zotse/FEke8wzHg04seuFXSETx3Hox8LFg5aWxRu3S1gjTF8kcDjUfEhNVFCfVHxGEXTEVPMtPJwbx4nIUe6EW3EfvBBMRUfFbQFAjDWncsSyfwOdgywvyxAHlMb45UfsvbKELSR+vq4SPp0VCaY6HF7gR35XbLXCSWQilZ+Sx4/BrH9YOSfgG4EYjx2nvp6cbklzWRAJNBJxvMQmn1C/D8wn2DjSM6npxrmeuuvx8mfpHyaioHB8UR7V7cnwCEyflnonFIhNAm1GifsnqzomeSn7hEQrsXHR4flSn659rBIn+x8aeicJ3MkAj5KhGe77hGZ8+Vun8JhJ16eHjtmP2JSAvGfOn4lVGfJZFkLLFiVKZ9eelH7ZQKfU8x57/5ZnhR5Y7LLtZ7lkP2UC5GfaISWSOe5yem7ZVcIPm4OsuyYo4X2wMMl6C02mv9fX2STsW4RKj8bI9djZbbdM393G9CFZeTMJqHpe0jl9PWG30pKMaK75AzgNNGQBF2oqGLmzREH1JdQKhpRIZ81rApXpnpGwv2BgBVe4KmpBy01H1V51NmCmTW/pXjWnuHwe52V9bCDjMipOwxXi14bxNCHUwWWAOTV7CBFJTHrNeOyTV+UoJHBgm4WLXxYbCqU0jecc05X7eRV71XrHVDfOzJ863kPNLDytf1KrNY1fjXg6B4rtl7/kLwtXyCr2xRFi18leeHaCDtJedFN9XujTv18zfRKU+1hLzXzN/teJbat89eR+o7jAuuEct69fDwCR2rwjFQMyzfEL5pA7IJXoVmAeD1i7fTGb12upe17ZVdi7eK6iQF0gaAUW4yPHX8afXOzMBXGnflCWd7XfEIfc6Fe3yh+HBbUdaqqL1D3iXVHFenZSF+w0OGzXxV5m2IbPeX8N41rTUddUBqcJEC9GvePk1sOGIssekgl0AUl7jYyldGyoRb1Q5HLoAccfkolho0CY4g+NKg3h8wu8mzUAjHdVzA/Rg9SD7TZIeUbWQ/UK0D6wIGSuD6aTaeAj/jJbwb96CgXID99R1q8ZRxSx734PRpSsPtD561cP0SCLLqsU4lL0XEa1l00ZMdD701/8DaHtXUgrPUUk8PuafBYb3GzSY+XVj5nJzxPs5jk/8KStnE/AoZnOqx+BHj9IcRPhj8E/eP2rWff/3syGCcf0omqx0PysDku43ZXD5PtCffdaqKY27yMwSEebOvnNEsuKfLs4u4k7KP3topa0hU3jHh+A58bpzdts8Xi6scrTbwxvRxG5shxMQjGL4i+Qvh7qJAucM9oWb4vmmzS+kvzL9pLFbCn2S/Js5cx4afgfxllE9MUR2vqtmMUlVs2uxQl4uzUbsrq/CnBCGWxnlir9cqYeCBFMYivy8nS++SFhs+zUJWhqwgCGxGqfN+2kCGfqFX26HGnlG1r/7Yme2c3Ya4v6rIEagKuF0UF6q35NMKrGloHZLq1cyEKctILRotKL9dSV7rgv+L7gLOvnL8jNxrNy13TIv4d8c+wp5z9ZNEa9KzZcCRimEpWkpzNt8+WTxPmTIYEBGQv1AaTe3srvbw/C+sPUZsd8xxQpG/wQ57QSl5Qtp2H/dNLtJcIFwMflH+iNsfw/Qh+mlnznR+if7yy/5LQl9oppZRJbQ2DQXu0FYiCHDfBdlE8zSqZ/6g0F+6s2ocn+65JyavDGZkrCn8cTDCfSoQcSf0F5o9Lk8ccg4q826FP51AlZFPJQubnBQiurJX8XzW4ZH7ydIsStCFlzvoNFQNpODX6834TTKw6EWfgbhqqjAoX9l/cfv5YZkr8zX7h/euyPH2skfx1Jd/df1Ljt+tDUH5+Jt84aoRsZfzn6do3AjoCPRHfkRh0giVuJxJWsRc8jSM/v+W4raNhy3Lff0Jn/VNfZHUWA9NgnFCvY+FiG86tH8/7kqfVDCKmuE/3IXP4lsPmaVW5wXhyVlXHN0x2OWy+Ld1W7wkqaFz1RWSA18BHys553LVRU5mqH5pVIGeeiTKUehV74R83tL/fVOAmNqQ0KLRV7i/y3NM+PxhGnWjrQtQxD7CR5yA9M2gYMjFqnb55ZArKaIv5MNtU2NWi4ReiB0/Tt83FvErt/+/8OyaIIB1kyyphL2bEC/2TPL+rTaCEr+gJtf8mrMPk4Jr+gH/jhNd6Pv8+KPZcHPlMMBYitVJkidtnxm0kmxJmcCEsgDF3kesDXsWwoKMFkN3gqh0AaEBd3oBsKjuD8/XoDkOCILUuiq3Mm4C7VjHBYsa4DJVMViXMVOGhdI+iPNKAZBUqTNfMJoDBxE3rdx6FqwCbznnBOFrfJRak+B9oIfMuFnQC0XFCI7skyUv/jeB+5rwCUDDmd35u1kVAT1FuAVQt8XFxdXHMIsxAbKJd7K/MvRMrlj7DXNhmlVQScN9ZzAXIDLFhLZjAXadsHHSUx7HaIulv7I9AdoDZCPIDVAf3II2D4CeoswCMzm3NRaoqtzXoDkT5KmZpVuQCfsn1logYyxo5r4DYLN9l5CB9k8dLa9AcmjgOon4CR5pPNIImxApMDoDJFvkDB7G4DclNkDkXOGJIXGkC2YBYC3sgbBHiog9QSpA9oHswA/ikIAASpyAwHqCVwSnOJm1C+h5hujIlqNg9nxuiFukKktN6oQ9RgQMC8GLTNhgU2J+gcJZZgcPglqLQ8TyvQ80pt6AmHn7NS+mf0Zgakso7Jw8SCsHEOIHIA+HiAAoogw9XvhHNyjlW1fgjHlpmDBYUMNKEdEvIQngZA12yJnl8uE8D/0ITMSnhTgTwJqonZu3UAQShhiGNqpHgc+Bg0J8DwOJCCTwA21PpAnBA6lsRg0J2o9ZI7QAIPyJUQaNNPlLeAhotiCZau/MF1CUFe1MVxabAiDENDCEwlGCC61F8CsCPEBernKZC8lt8GQcQQMFjjM4QShhmQr2pOQZQRSZlDEt5MdAG1I9Fb5J/hx2hAtQuGSDaINmowZqI1slqGh78GiDgqjio7YPQRYMuiDhDK5YZQZ9JWvkeYF2rt1ZotUF0CAu1PGO35QQffgC+iEl4FFCCAuMzNAas8I/wPfh2QbBxdQdFJA8DCCXQa2Eg4CnNmZN8DnwIHhfekkluoDBAcCPXBPQSpgh2AnMFpjH4vWHtgY/pF1XpHzAc6mZAk/j58bgX59cnEnwbzLW0TPnSNVtqnhwvnDNyevnxDUBWYqeNvBiwatsZCPl9ECJWCUtmppQmNh1ZHPnkGwalYiwXmDD+GWDGGrWCOwWRRVCBnZbSCisFQlncfHt6QqTAYImyuxNKOsxw28uVgpwXvBrUFxw+wVMFr6kBJoVoPx+wTw0nkE8Yr6FbVuJpR0zmI3RqRI2CDwZ8xb+HCMAKBB1dqEuCLwYk9IfM2D8+C1xOTPtZDSKWoRKJuY32vHhN1npQTgoU4vwYqwxhF2DKOg+DX8s+C4XD2CUCrXhHvoOCjrukIIPkjxvFOOCgCuF5XdNODFlCoJ8cp5Zuwd38FwiN5cbJD5RvjDRAKiNZlGmoMkMDkJZAv20ujukJswZBdcwSgUW8FUJ+OiBDNhEBCd2m+DF8IwE4gmRDH8puDsOoRDOaDTIket513+q5tOIZeCDwTuDrBNWC2OjhDjhHFAmIXvBXgEL4aId0wAOlKgVIYYJKISJCIHAuEUIZ+CNKkVtMIfhDQugh14wTgwnZJIw94IJhgglw9SCsn8++sK9PlrVIvyk6BnVod1ubEpo10phYftm/8bNBisUDNe4yPgFDvHF5tuPt5D3HM5JZSE6BU1uSJFBL9JNSE6BKlrSIrDCc5/Ien4ijKlCZNAF9bnGb8EoRzpdrDU5IofyVhdGKsHAoW5uPugg6Pn8sVJHxVvJBAc6JsewJtPVCBnEihYXMLp/ltM4Gfn3o8sJX8jAt2IZNL1D5SnL9PXlVDRamkRiIA84WoRBN+qLTppod04jrPORvJE6FpnF9YJnITpYQj+ZD0LJ5ydBAgTBDX82oV5CkUPyUjnBDJVyE6A0CN05U7tpwnQA6pnsp5DiSLdCGoSl9robzohoVtCfLGlD0tJ1D0XDptnXsgJiLK6plSptoAYc9lxbLiRlodVDGbItCQtBtDK/qrY1oedC9oSc4EYWdCOdGaUTodDDDPLDCcoW90qrDloQoXc5EYejDA1FpMHLmmMVqnBhrxO7wvdJllbyrkta5LTC8lgD9D1umMqYdtV2uJkw9ynmwg+JzCmig5CDzh0VR2ilEoYrL1IZsIYfqpTkzYP6MwKpOJLps2Q4Yur1kfLv8RQUj1AyJDFLHoEBUMraQB/MTFzYIBlDSM3kkLPa1DYcbIsFC7MkCA1FtLGzNLXoYkJoCJllyA9EIkp7ZxYa694yKkpiZkBJPWukklYWt5j/gyQTFH14D7MdUhLNC0vvEbDS1ozMKwZbJA4Q25b2sLVEAvt4P2MNoPYUnCA3rlVY4TGQ5OgzFQ4VHCJYVlEAjpu1yqP7ChZMVpSYrZciYhElmGhbNO/sqDfYUeJwoHtEoYlHZ2CuRBK4UopiZlggAYs3CipgHAYQnSCW4QaR+4bCD64WrAn4EAk6ZApIHYSshdYRElT4hR4u4TyC2JLR5YAY5dJTHI0vQsXZNfFuc2TMaUTttQ1rIizDR3pF0N4dNV8lAqYpEPvDz4QLC93oecD3rX87pNeoBmo38GoibgxxkDxMXLL9E9DJgnmN/lw9CR8NALR1UCO/DXMNn8VzFTg9QqhlXMMag7Zo0U9mtGhn8iml7WtAjgYSjMg9LphEgBLNjjgh9cwZp1UOM81G5EAjwKmC0WuJChwOIBU7uAAJNZt/DTmAP9VKiQiR/ndJWUtC04ZBe8UZjQiylnr9/4fLxZKiDJiEYzIxPBm8wuLq1tBFgiiRAbxyhIgjg5Oa1oSM/lwLpPEw+Lc4EZE/DNWmAisyG/DjWoAi+EazhCOijJYXBr8OEY4Je8h29wZG39QXkPp3pJo5X4YTQFEYRUGokgi+Wt392OKKlz3KwifptIi8ZFY4jZiXp2tOYIiEaaNMMnq1TPuVUPETwiYEWD8ShK4jJEeLxD8DTpdLOTC6ksuc/yFYgz4fz9Q+DxIr4WkjfLgiF/ZikjW+mll0kb2cu+gUib4SQCQDCINK2KCB4dqmYIMu6o/YvwY9WL6pW4jtlGkaCA7eDEZakU0iAgB9kuYPjogJnW0iyhKJ+RHBAz7OjF3wjikfYMUsiYu+E8+MjApkTmU7WAGVRkfVlzWK9kz7N7CKLPAIINKcUPskGwzVP3E5LGO0ukdus78L+YtkfbBQQM2V+DBkEGKFUjK8psNd2pvEheFTlGkfNtdYTREe2PBsGVrkYR+kid2qJWVFyr8jP3JVdNdGcjLdGpsqopsjwURdc+Pmcj52oJsh+OboXoh+0EUc4kBcosjGNq1AFkTh10POaxlckWxycgVs9ou+FjOlRRfrtijPkbRsxkYpFoUYiiijK8j8eOWVOkRCjOshUj7YGptdYe+ELOv24JiK1FxkR3pp6Lyi+slh4s9ByiXkTiiEUScjMLGDwFcj6x2kUkYZUVG5cUHvlvrMCYeWFSj6siKieSAVtpkXSIBUQijbNnusKiqmNz9tFdWTjygdfuGhXqEhgdIJKom+MTQ+APtBCzuYU0COh4aIJH0XVITBXUaRQYqqggQgB7hWYQmCTLGw812FbQP9MGiSHtiQsHieUwsokimXmmhUxBkRQ0dGj99uUQgJOiFuNOyoU0WW1Y0dzdsmgmiM0adsAsCmiF9umi2Hj6wR0IfD25LmjGXhkcV1LVIk0Vmid4fWjC0RWiw0UlkANpHNgWLbAwOEbRlrlyw6IDzR3UDXk7Wp+5yriyxgJM/EHMDyZOaAhEtYCJQqrtKw/wgR4F0WTpe7NJIo3BWN8aIa1K6OOiZWOpRHuom4BWFN47+B08aaKC1VNn5RdxLII1ikDQrbMR55tlKx2KDz5raDiVR6APkxrhOitONPQ0iJ+ju2Fixn0YNdyBDi02aPeiNWNlhM4lejl8iD9M4iKgz0W2xIanhRNEFcR/0QvQ90VzBv0S7Q/0W+jN0dtdsAqVou3FuiUDBKsgaERjMfvjJrNMDRP0aCACgtqjf0R2NjwO+iwMQ4FCYpXQibANESMVm4/KIyBvAgkiSfN0CIHgg9Wgd6BYHhsB4HiwABMcg8fABCUw2KcDA5lPkl8FiVLSptYqHqQJFMfCVlMb9J8HsdDoWPCVZMSpi4iIqt1MWsCSjhFF+HqlN9qPkBtgcStjXJbQDMeslxpnvtQ5j7geHkmDTMZIwLgQI8sCumCgftqZ7qmoZbxMj1pnJe5T5BNCxSmv0NlIqhqMVc10SLeI2uhBM/+nXgwsdDZuDLeJhelcReuobRbxAwAW/lN9WSLeJenEUY8sWhIuBOEYQIFljIAgNEmuqjR9xLNZNSiZ9R6ANIgMSCtxDANJosQR8FiG1iOjHjVd6E1iYJnqgAsWjZNDFJ8oTLtZP/iNjzilFjCaq2F6JO6hdctO4SsTogH/vkEAse/Az8tTk+jLVj+0fn9m6H1jRauUIasXvwF/h+hjSF1iqARFiN5CUJN/s2RKaFtiparB53SPuJlHNmZ5akfR9xG70dsuz1bsaVi3uuQMv8FNiqAfsRfSHFixrsS9UAencvrHgxyILtVU0eDjFlAEE4iNDjmYWfs80StVYIvcAoKGlixYha4AbmcxmiHTBscWmDmTmaiBiJB912mHJDZBoAy/DrMVNJ1Auyow0NdNLIfUA74acTVNRxJ/DeLqzJ2cUcENZo540Kp41eccyQNnH04MkCxQV3LNpyqLRxvNNiQ1fDaMJpjLjhnAOgu8qiQ3/np0qhELiNSth1TZLxAxgiziEDA8ZucbO19cflp8eG20KceJRgYXRDWZGix/fIziXvnACcCsw8gQijJSmnJ1Uwe5jy2o5D93s2NzxHORSKCBU7eCyw7JLAEiqFOh46KBxqhC5QIKKmJh7BRJ6KP7juWKyFi1JE8E8WHiWWNJJJAAni3WHEIWWKRJbAkVQI/gOxDWpoIqaHagewsXiL7FMJbNrni/fPDQsCGqVw8YxjM8bwJBaG/hC7DugcaNaFRduWx/VjHE6eknj2FJHiW6DZAB8cHjQ6F3jV7orBjnlTRe0EQRLkQ2h8tv3jIfmPipKEviUfl1ILUGMI08EkYT1tBcqaGj8d8TVhLLvvjGrCj90IFjxFKL4ISth/YV8aXiKaN9YzDiHjCUrVsb8XdZ6aAHj6qgRj2AqHjuXh/YPJDQEiqHnweHDj44ngnigCZD8bICXif8ZoAP7E80CxKnjBguoEkLEPiSaCjRnlsgThAoASR8bFYCgkmd66L/jyHAviXKNqk/Iq0db8b2ElQjADjUSA9j4aX01WMypeqPtIS0VK5oYc4ZePEwSq0aUdA0XQT00AwTCqGxBlfNXUz0bx4BCdmiOmp2jbgf9RFfjHkVTHHkqokLJZCfzQqQH9IfNIPDVtm9xwnvXD6wd7D+bGoTB+DoSzHnoSB8mBxYOIoTi8ujEUOPwwa8qqVe1DuJG8lqV2OH+EwCn2CDmp0U/fEuCbCXrJ+geYSabuK4itqGVmZICpJ8sXxtVEES58rzRV8sWpl8hESGdgWt+aEthrpp0U1YXfwk6ITdM/EflUyo4T0iamFmRngizCa/kyyHTJ8iYMIzHi7C9hBoTTCZHCDBE6N/8k4T9aFcNENHfEc6A0THEkms26DUTwBPrBjfIvQVCcs1+6FvgorMkSoaEAjVCeVNeBDbpYbHES9IesQKrFLD66HJworGLC9hETEbrJBMiIUyIOZp0VzrO0SNiV7MmiUkIVie49xvIEJbKKESqichCZiaUTepukIJiYYSipuZC8Ci/p+bh0B3cZFcJCRmDScceAj3jg0T3tFAX3tbp49PpBSSA+9TVMlB/iaaoXIGOZ/ibLIJEH8SH3jCSwScZ9QSWLIRDLh83VLCTSkOB8MIPsYXVmBp8Yrh8d+CTJoIMuw+yNiTCSZTB1ZDyw4PoLIJYFVQK4miTviBIhuLoR9sSciTxoMsQyPjmdhiPzxojFNCtkvasoSRLp+SWeB+eDGg2PsGU5IC+gloV28rPvpApSbDD40jTAHic7j7hKGAiEp59Qgh7ihHpW1VGKPwUWmA0DZJ1gMkbI0mKhnp6BMy0wGmBknYIhNTnEEIdGHYwEdO/UZollgfmow0yUhp96BIrxHkpyjzGBaTfUqNprSUUjGOlD1aWIkx9Sf6SAYlR9lWpg0MZHhkHSSsFDScYd4yZg1AZLIdNgndx2pBMEi0NGxF+MvhhfDgIdGIqI/dBakiYo0CQSoJiJMVA8jADA8OgXA8lgAg9yyVJjGgKg8emu7xykoQ8Glm2Th8qiV/yG2S6YB2TWyWy5+yYSUiSuZirgVZi6xO99IjuqA2XDjhbIccCBGj4hzgZcDNgfIwfMSTjtTDjhr7Bjxg5sRZOfCVDh6uLJRzITQHTNc42JHuSTyd/V2RFaZRxOT1+2hHILyQxdm+EMlrySJZRlleSjyfhZOkLO1TRlDD7ZJ8xr6qcN4YfBZXNIU4aZCjCQKV9CVkpNCdLr4UJgo0VcoatVK/meSu1BpZLyVTx8zsDC9AU+T7yUyJgYQ8iAKTDwHyctE8aG51iKe6ZdppCh1eORT8LMwVVOruSSKU6EQupxCf9GNEShAw4YeCmkioY+EhHG+1/8FFCmHISIhIkvVXyX/dSBMhTDycRY4RLM5fuCaZnnO+El2KcIhktWI59MsAtVIfUTsLlCD7o2o4guBc+LPfcnjDw0npBe8DKRJSVnC5CbUC8A6PmeSY0Cfd0KYw1ooNKjFaMMIinKJSuUXeSz2jRT3wvct8Oo5TsIsJSbKVa5uIqvDJyRFMPvmSo6TnK5ijs5iWikTiFbjqSHwg4sAseGF5oko0ZlOCCyvINEssSlTfAXblPkiy55omXNOsQVSSKRpBgcX5QH8pncbMKLBbxOfYfzElTxUi8DszA1TJFIehlcY+EfXF6lnTCJYyqY9jzCgjVpFlFovUgWJmzMcRsqXKZMqSBFesTlSRLKgg0JDNTsAsa9rNF6kDHOcM0qengSqecNuGgwpNGlCNM8DViqXANEaCLtjLnGqQIRJti7ysDF27PliKqb+16+gdTP7DDFWwrFjNqWJSiqZFjYMqjEkGIYZaqYAU3RL1SZ8E1SeOhv03sadSSlN9Tbsa1kqYvhQHOCtStNCDTgcQtSwcX0C+SIAQX1rNJNAFzFbgDils6rVi5KpgD0xvSw0aXgx0RJjSLXGsUcaSTTjwGTS4qSn8nIa8xDsV6iCSBklB5MFopDodwQeOhJOtF4gWYBlJ+JJJJP9uaIPxPzTmabmF8sZDY8pJwhjIKzx68DAIFEOjhTxApJMJPLTkqG3hitGTIFENLTPknpxl7FLTMkLhIe6M7JRDkLTWaYxIeaZzT79oxJ1kPCgEJOrSEWtDjqOFzSXxBAJAYHXgFxpTBamsbxZ5EZpgEArT8TKqMrVMjSItP9JmkohI8juUQTqIpJ0adCQCaf7N84vqVcaRokP9JHTJznEQk6aUiu0ddJtsn5Y+iS5gBzDzJVCbDN2SWVpRiUHJ5Gh3wpibxBo5iMSlVDHJ8Gpp0fNCBwoEZdlxEpX0qrD+lQzM/lQOMgjO6TEjiUNXCq6aeMbHijgiSfXTwEYa1nmtXS+EVYSWKFYDAiaPDOoGVptNKdNxoMJCXpDPS86cuJhonYTRZONBsiH3Sd6d5pPDDITwGixQGFokTl6eZ5rGLUSF6S5l21EE8wWmSYtrndZQvDSYKrlb1ovG/SGoghFy4XFktrgPS5IPzlOhJXSKpmhMItGoSg6aTIz4bs1Q+GSkr4TAzskfADUssHJoGWppw6X+Q4GV31PNvy98li+Vb4ZHlARCeBNohdDqjIQzNYpaA/XGci+2h5p4PIxSobulDFrCRTAaOFD3oFZc2JPtwnQKIwMsTxseZBTomophYATEdpcIL8NBGYNDLfiJZ4vKNCfLEdT2Gf9CiPNcjg5K752uPW46LH4B+tLh4SKX+BZtMozMDHRQy/MozwYuD4eoTog+eEKIhGVrCakceBeGXoIcRvjIvfDozrhpNC5oRozt7gvEsdDYzRahDFtfMoyL4n2pyGb1x8Ym6InaEpp4oaTEIRIqN0tF5tzhiPibobQyEYmpT9GXEy01F2sztJO54mY1p1oS4yxKcwyq9Ou4Qxiet1Ge6h8mTVhtGUu4xKdy8loWe4p/C+ZvGde59GjUz1oWaUpOld4/NCQyxfNwcIYQF8CYkc1+tEky3RJIzEoX0yV1DEzedF0yyYsJ0KGQMY+MbWiebp8poaBHwDGWJEdWrzC9BLHSamsXEOYSzolmZQdGYVsyM6ZISG7C8Zr7OpDiYG3ZjwPhVwIVGZ4WFHQ2nrZcTCemw9HAeCTCb3ZBaAOD79nwC+qCfYtwVczIfmnhbmerBTmSj8mmD08AWVZxYCcpDyLthI6Sm5ohIupDv0NmYYWZ3hxLoyTwWQap+OnyggWW0ARcUEE/7DcyhSOe1Abm2wvmU2DAblA4GwZXgnmXwC12AXUQOj8yz8QJxhfCesPAcUtAEX+D2FNCy2DgOCXzFTlGDneCvvFSzeWdxC2JD+8z7MSz+OipQQHDVgY1EZ0b8QyzgLnSzvLInRHHsXD7mbQ4IHC+dwoOT8sWdh0JWeT8IWXp0cRHBYhLGizIfLzTvrGpJSKsxCsYLkZIbMA50WVSyFxmgR0WYs1ZWRmpnWeWVStNKyd2gKzOWTw0dJMEZBWaRC3MBaRlSQXYsRI5ITwjiVeNDFTvPlqT3ib5jrpCGxVPq6tfslfwodK6sdcr4xp9M7AC1BIg24QjojppLSRmOmyQfhBA3GMnDKgoHB/JE7AtvvKs94LRBgmIkx9UcN5npBLAu4VST+vPsR0kNawAyvWznZKgd8KK9l62dWzRDvCieyJ5IfDs+gC2dTEXMHJ1p2XLQf3pwh4UAzsEIsbpJEPpQFhDiVnWOzS8cB3wIDGaS52R3x7opRAPaSq80tFyRW2R0g69LRl+2fkxnOpowaCFaoZkCGgFcuSRgZLDJ22cMxbPHLkMmEdEH2fjIzSZ7TcdkQY12cF8FPu8ZM2VfwN9P+z4ZKezs2DByyZG2yp2XuzwwFAj82Shz2ZHjAQmCWyjZI2yRmNBzRMq2zIGYIhArpiD3Ls5kSOV5cUdBFdxCXGi60S7TSOW5dKXs5lgvmFc7qHvs3iaajhHi65HyMqRdGOG4fMHbkAmKBMjPPEEIeueyJGgJykUA75+OewUeUFvJgbJJztSPJzruLJyDSDt9z2SJztSDNNhtFYxYciyksrLiRmDkN5KUqYteAkOw40nlA/NJIE0CCYkJBAdAjOaCIi3DpzcdjVFPvBpy5AseBGMvEE2ugsJ0RM+136k3NsmEpz1OdrYHnD002sgZygHETs/ZGrAO/jJzpYnPF7/q5zwwOm5E8rNpAmNvgZyOlzHOV6Ii4clykDuD5GZoBdhyHpy+vOD8DhB9JtOXFZydlpzQuTWYR+DxJyuQNxVOcHUTOWP8GdohMi4R1zPAsmx6uQpyVAl5y9kkP9GuWxITYR/9ydidE7Or6louZwIAOYOQSufGRMuSbCCuYNzxZHskcuUwEnOfbjrMbH8RPBT4dmPc1XibRy8GWUje5GAls9ntcNhOdTYIMUIjFHwpHRDilKuXaQ55PyjVdqChher+ExkunsTiI70heIDBkbEqQ7HjxphdsjZPwDitL+h6Il2dQhIIhUjwuW0hreu+FF0kIdwecBEiWOey+EoHYvufcwluenAcsahEK0ktyPuXPJHuanBOEJ8Y5lGTEyeVHtosLvBEYkrAVDswhy5ogQ7YKsTfuQL4fQAEsAmHW0seQpSR4PzZUefcNvUlPwAcBCtsIjoRgbDzzgef9zYiTjdWnHqjVdktAGum9z09m1ACAdhFGAXjYBAHkwQeb3sdEJ9zvKTBYvdoplmYEjz4gFYcTeUlAbubjz9ea9yIRPzyteW7ZumaYIjOTtIpbChhQBiHtGecrz7ebJR5rMhB5eSwNbufNZf4ICi70M6JM7GeAESEHSdVHjgdmHJ0CkEQVYcZCVtwTPtbELcAcTnGy6ObMyx8Gnzn0Inyn/FgQ8+bLY0CMQDM6QCITuEREBcKRFWbKwSAYFvk70KrBGbKI4tAgfk2um916nPHi1Tu3y7nE+YkzmqdxrJNk0SBwkccFLZyRK21bAjLhHrJhYWuA7h/fsXBr5H9k5+Zz8jrHc5EzJPz7cBD1ODOs5mYA3zoSqmdlsgMhEKud9H8OVlxcMlUuWsfhCcuYgwKpfy8rO0F6+d79/pKa9CmH7iYfhtBBgq4Yb1o/zu+VfyVesvzf+Wngv+ffMMAoAKOcpGpQBWwQe+ShU++YhVsxsvgbehZlM8agQt+YKIocmjh5+WQIxmBzUfHHgEoBX/yrOj/z8BXlZoOpYE2+cfhkaWmYG8BzEBghu8LOs3JaBYgzqmjpNiSWfDhTHQKcAYXJ2BfsyPibqSxnMNF5OQM1BnJbJLVIGTMYIhoCRlM1CYMzJJBXe8g4HwjRBb7TTvLyRlsGhzUgXbMWuIujgEJ+FSNBvlkEe4xn8iKhCXr7TkuE2QPUgbxQJhR1dUKslCeI04iEcaUwWnYxmZDMYpBeILHEi4K73gEsY6sMkPmtg5hon5R+0WVh5BTEkjBbFoJGlYLq2n9dLsOoKEZDTZyRigF4qJOQEsGW4Ehc/lT2BNNpQjHkAhbq1whXgiHBSxQ2qfYLnQIB85lP/kPBQAiFaheRmsZDwNatkLQvN85dam4RovA0LvBeYKSZLPzjZHEL8PkEoBpiA1dPqULQuKEKSPsEK6ZEMLeILkLwEezZXEZkKNBQI1GMqkK+6UthpuQsLdBbGAFETMLYhQNwhBbko8EYoLqsCMLmpp+jqsAMLrOMUKKhb2o9ha59OhVsKXMC0KXpOnIFEXcK6KiAhlhR0L2OLzZ5ha84LhXlBXEcQxV8mMLiOa1Az4XzFYslgor4SCKfPtwSONJLsz4dLFQ+GCKu+nCKeBQmyK+YLhiGdFB0ouYJ9GRHJ9aokBtGT9kF/qmIyPgSKyagADcPrqJCclB9cPsdAMsdaleGdXh+GeVkzEXB92ol38/IjJpMzuEY6RZ69G7sP8mnM68aZOP9rWEozVeNdiiRXVDJ6oSLVcTJ9oYhzkqcUppRRfti0RX3pOIaYyaUi1pVRamYmKrwzFRaa9qXKSTJRfd9NcTKLFdJGYVNktDdRTJUcKutDNRT+YPyvozmzmAVc/mv8ZRTBAdstzhvGZyLwBWwiCSZgZ7RUpoSRe6YdkvSLZRYuZoShh9QxXoDxRZtocRVGLjRXB9nwEYCAsK0yGRS391QEoiOdALJfhumLvGY6LszOqBLcSaKffPOJpReJ8upKEDHdmR9DReZUTnCMQePqaLIKu04eRRVx1omTiZNLaKYLgEAvODx8PJNmZR+d2KvRYhd2RZ7onpC4k0zHQiWRbX4PTPqK6xXXM7OvOJZ/nB8cASUCMcRDCsxdkDzRbDDRxaNSdEJ6KDxDtyKYaX0O/vvDyPvx5k+S2YmOcXZTxZzcGXmFMm+uidjxRzCtZLxptXHXNpquR8KAGXyDmep4IYOjwfiFCxNMiVZirvnI3jJVdeiSBLHKFrDM8gBLQJa1A45HFojhZLBPWpYSIJUeJECCnlSiUcLlyBAUUbtUL1YPrNJyIY8TOQ3EtrhBAJvCRKsidmx1UgwxbCUPwXZqFVGiWLSPZiYzoJXCwgTHBLC8pwMAudShNiW30sJWYhaJX6gpZr+gL6SIMHZkQozHgzA93EolIiXRKLZgxLWiUxKTZgJKvCS/gTYSpKtrJzztZt/JVObWD1ZkR5ZeUYwCZmlYsJUtBl1AhL5YeLYqNKoTlVlLhNiaoSjuPjNqXqcI+JeG5S3KpKhJUPCkUK3TEIemRQ2Tm0iKG58XcBohjuVzdBXmdyhVN3glEVi5jHG9cA+cP5YpTtcDnJkFdiNUJRTreBMgmECe2lZ0R2qlLvKAC8R2llLAzhlLHuEVLn5gIBZ2ukDUYtT4l2qWA3WL50hOiH51QNugeOo1KOfIhgw0DagapRMEx7AmcOcZHxkXFP58XJlLagaLocpc+TzAe4Ucnj6LGeLBZ4FrQQ3OnlKe2nMRWKerwlpcrsTPkAiM3GlKSFoXgQukcZOKKDICkDEiI3LzxszvIQzOpz5kqKpoSpVTwCgZ1LZirdLGGutK01FwQQutEDrgtyVGGl35zRLMVkCD1LH5O1B/JUiFeDLK4/uKFLbxeuTuOVIShiPF5NGAUCPbg+5xzH5YEZXSFSELYRySKYVWQujLxQuNAsZVyFFMtj9CSC9Zi8lb4iZajLi8ntdcZRTLRQpuZgbGxA+CsODK0tHcjoKFUJwa1AwlKnxj7HfcQqBB86rOzjfQhPxZAltZnxXIdqKHTLemDI5HDhuC7IMMxHgk6FyBKlsjzJLKFcArKlWK6ogFPpAIZrIINZSOFiZfyF1ZVNcUaPDLtpoQI7SIDR/2euh58FLQ+ZanxUpXAdz8u1c9ZTTKchIwEpBC7L2hEspKmFLLbQsII3ZfoxRZXaoW8egRsmFrIjvkkJZcBWETZXhBSwjDMMZRp5LyNYJSyM7KpcNLKhwhLKTZYnAewkxVP8L0xs5HUxlhMnLwBNiQ9GHMJZZZUw5iF9ZNhNac6bBE5EZTa0Q5f+z8ZdYJzZVIJK5b7dPZeuFySGQhZAMDLcqK9RbIMZEhohDKBXoD8NyddITvGvNj7IAh5Dl2Qk5nDB5DsQY3FmdcDtKSQJFpckDtCSSR5gvLwGfQNv5njcoEUIUqekIZzoMjIfQE/1jFjrB4eOfLVFu6j/BqoT7BvUC+3PIcWyADkAbrg15DlvLcRBPkWKDj4PaG9kN5XZpMSTIZh8iUNM7MCNLTuOgjBtQcH0hycAgNjR2aS+gEgfArQvCzRj5T/LZ2W5gbFqArRaeyJ82Dgr/iPyMH5hgqSkONgqgSgq79uH87AfX5AtPft/5lVRx+gogyFaIChfNUh+fDvMV5YQqqFVIDOFZyR4pKA1AcoArMENwrLAbwroEC4M1COe80PICLsoKm1XsfCK4BPbwdhmeA1mdCLXLm4UF2B6KFFaeQlFVorkRePKlYhaiQeAGJCOkMlbpB6wXAqJyBMPhxPWKYrrFR2xH4OwUt8Emp2WI4rQueLJJCpYrqueVYkxG4qjxPekHOAGJAuo85dZF4VHECZz8zl0ZimChMQlT6poRJlEG4EU5QlWqJQys5yPpINkJoe5ymZB2xFMUuRnFRLIrWLkr8ZtHhH1J6JRfMVyvOZ4rbKH14fssYqvFQaRo5p6I/FXFzsTD0NqHg24rAYErwlYzMPZL6NolUXDelZax5AuXCCkjBpEREzoWlcmwypLYqTYskrXFfuMBpTep9WHlATOeJBKvEErI4mNzxeCYqTYglJyhvUqjxC1EbFe0qvXK0rh2CsqelekqqWP0qJvJVEulUHgRlWCY2lbGBvYrqYUhDMr44lcrZCCKgwutMy3vmFT9uVFLRXAsMjgfFNYqVnzTueXyrjILi9NP+SD2RTib3gCTL3g8hwSXwDkkKiq3jHbi9NFyTLGDCrEVQiT0VUiS0VZIg+ZDGLhkgi0zEFiStycx85cRyKShKh8lcWyw4PuSTRDgbI0STWVNaTh9qSSiypaWBlcPmyTjcZtocVQBB2aVLjHNDKSoEaLjQdM3hF2QVpP3tiTDxJ1g8VeJ9iBGbIpVZtphSb1pfGjlpq0hSqEhO2KcSR/sB0NBkZRTSTWVVSSexTyrp+PKqnzixQsVaaqayn3LmqHAo1Se9AR5bgzwpVCqD3oRht/oqsBmmrFIAXjoLtDjdC/uvoTtFldjSHJdw1d9cWJtZhF5Ws1pxX0j5DiTd0JuwQz5cXAe/k3pkEXkNM1S8qgFSmrc/l+MItIHFlJgI1nmkBJXmvv9gldQdAbuhNmlR9Ywbvv9dEQGqc/m/CwWj6rM0C2YP2qKqDml2rdWrokm/tUqWKG0oCPE2q7uHwlnaGOrRaVDd2/kOrMFXmCQMpuldWhx5IATO9ovCurW1Q8qXVkGUj6BlkJlc4hXOFGqCSBuqRkWGrMVWddESFOr/iOjKeSFerhFb3Fk1G2q7VSGqf/hcrvNPzsz/murAtLtZd1T+pAkT+rfSM+NhJmoxYWtOLi2M0wftkv8/VTUxT8pMig1b4xrWWaoz1deqL1VX9kNcIqS1bGqQEfFDsJkigBmooJe1bCUFEfMtQAbvsxoCRrc1H+r7VgRrc1dxh11QfL/0kurQvCKU6/nOqHGDGq71ZAz2bENEk0Sh9CkZxBJYs+MPPhCqZmfmjQEW6xM5Mu8WbjeQqXNWZqQFJqvxbwKhVEaNt/rRhb8OWglcZAC6eNL4CKIX9GgvaNDIOiRoYcX9EFAmxfVNpqslE+jdskXhy5tLNVxhtlAMtGIdiJ+kkXPo07gGxQVcn39yxB28gSA1kOrizRpVG1SRMvkozNW4Zp/iEpTam4YTNVyMl/tKF7RodYc/odTxRtGNO1bs5oWsSoAMf1lyRhlqz/vpqe2t/BY1LtSuGj38LUSyMPfADVlstACXDHiR0vFFr5NGulIAXFqc/ILpUyMZq/JX8qoRT5EAohSpuNAs1mCcU0B0ASpWqBEZFrKoqutTYia5pmjJDP1qoiINq+CVsAsFGISwpWPLoZQ+FIdHY50tESCfzM1KQYaKD1zGWqI9PSCdsjmd5kntps2EkYdtR1DbalGLg+ATp42IkEv/rUhHoa6C7DIW9BUulpuoBrks1cHp3GHvVhAQGxSoakBXtQ8qbofdqBcjO8ldCw4xvs3hTtb1Jztao4YdYdqNIO6LN3pDq9tQ4EnzlilNtdTUlKpjqctHAo/tRDrDdDDT2SojrY9JqCijGTqutNg5Fvrn9SgpvocQjY1C1VjqMuPCh63j5Z/UlbpBQRjqXlc68TFBJx6Lh61qdWXN8xQdryddaDmomLrhdRqBL3hllB0XWKQacdqpdQXojtX9FN0sPpJDNDqVgUtDiOFcEwNTpQVddzrngJQKZZGDLfxeiF0GXOJTdWy5pMm00xtfE5o8Bekp4omjLdTecndX9xcQqkcPVStqEqc5Y8NVb54NkZxgMa3AnXoHq7UG2xopNNspcA+lY8bvsY4otQY9enjfpDjQ4RAJBc8X7IotvSq6RrnjjoDxReCkvsl0Q8qMzPNsj0KgIO4I7ZcKBtM9sLHiY8LgdXWF+gVBPYQM9VJRUklQMXWFiJk9cLRdpnmVg9XHqyUdHrHUn1RI9S5RDKKkNY8bVBQ9bRsHiPvZ/dTyizXmIhmxuJhizLRsx9TfitJKHRR9YnqaMc5J0PDDs2Rqo4AcP28iNiuhD8ewRPKgKwcuGfji2ENs0uCNg19ZPq2YmAN6DEtAH9XAIrfDfjr9YpQlQMnxJWWfrxtjUgBAofrPjPBtROBATm9SAbV9ZciK9WHq09Zcj4rC5Rv9Y5gyWQAQmqivqt9caqZXmgaPfjaNOkMFRu9eRCqDOAaCtiOhajkXqdaOXthLIKIltPgIEDUGcGADz8aDV8jAKEayyDZXr9jBtACHLnqv9QAbvLKZg2oBAb0DVPhoKkPrBDSgao9VUIBAqGJXdGwag9d5ZN6tEdC7MwbJDSsCFDY/rPjN5Y/9WwbQfjaypcDKsiNpfqZrOxB49XlB99bwbk2E8iTDZ+BODa+FuDYFxBftAaZWNugdDUvr8tmob4kSFTs+WzDkklSZCqLsRRtS5M/sbx4/DUtrbxZ1rhXN4aOVEON20bidn3pNqtgBBIQjaPKoZb7qrjN4p6IN9tdDTowGGCLs1AsGqFCKzs8NZYxk9KrtLFS5hsjQ0wosKUw4tApDPGJIFKNsGqlTAExhlXhyXgH7yvGGokvUPsMI+TkwOjbMUDkikxmjc0FiTNTs6jbzBKcNCMAeXDs5gihgm9SUbSBKjFZjQUbQIIuyFNOSoMjewQqdB3rQeVYFQ7AMxRbIwF4hOJgfGPsb3ueupRsEFoJAn8pZSXFp0jXdzmNnsU5hRjtGEGaTWjbjspDZsb6VZ3s5/B8blsHrzeCMfUJjQzsgyj+zMbgcb1BD3hUMqCbTjZUaygk481jcUIjjbUEFNFMFiAg8rG2cShO8FPwrDF2zZim4R4hDHgEmJX1NzHxVp+NYkTin6lcdt/AxjfIdwcEZy9BGWyaTRB8mAlcbD5RSaJAsCb01Qngbef8bB8F0ahDhsaqCVG1XvmEac2lfpl9gdF59s5kxTYUc1ql7qj4X5c6VASjAgorpJTcU0lTUkdpECftOOZCrvxTtwFNKo0ihoXFbfJSYqOHCd7YdH4O9cvwYitbC9fMSY4yMM0y4X0buMOUNBtTiY+ilbkqWK6aDtOiFGWI6aItHvYyDDaa9ED6BwcB6wp4UUbd1ADl00UiY/rKGaHTUaagFZeBTTc8c/fG8Z9ikcdUzUAq5APMkCypmanDg6p3lRBIBdQdZkmIWoCyvb4DeF3FkzeWaZSIMwNEIGaEzWNotGmqIvTcBxP9gVQFhkYouFQNkpynmamFVkw+muK5CeG0orTVOUKzSTIcxPRQJmobFeMR4bUcd5kVjnQAF2MXQ7QNoqbzASc/cjgzdQIeK1FXqglzfSdNzYUjr5BubMRlubyGDubncYM43YNewVzRy9z/JIhmoMCrbzTuw14ZEcrzUmDYWKeajzUIobzeVhVzfT5tSan96+hIpBAL11bFMHq7clrdzAk8Y22KkBZMsXwfSOWwaWNsxzApQpY8RGCq/i4EODe1RUFN7cXfl2bc8QzB/0ntDxcIXqUjtpkCiiyJ5tvKD3VBvxzSIRb35IIFj5I3qadXhaxkLLh29XjUOCEBNo8gPxu2Mhan1BXxELX1Q4LSTBeHGhag8ciCPxrxaZ9VVBdlPlYPFEpUIlAgLfVEJayumAEDiqpa4KZD9moMLh5HKEpT9U6w3YPpaErgfqjQQbd5HLc4z8QCDy1HvwUyDfipLVpac3j10NLVBaWdEGQb8TZbfVFwIlSOOMHQe6osLb/qjLcmoELepbWLWcRULYhbQQORaAreJTJWSLqV8GBalSGSzBQdao1LVg5ILSMj0rclYHOQ7dIrRUxKBb+j5teQ4bQkISk4EFkNEokbvdSKbjXEVafDVsATLDNqLcrEbxxIS4j0AOISQAAAhacAxtSTEtA6sltA0TEwgQEqVkxsm9AhmgfQMWqola5KiuKa3YPX1KFqOd6cQvTEX4D6BlildgmYjyYbAyzGAW+mnjQU+JUkiV7/S/GAeyBiUWvIHl0ASEnYORbwWvHnw7YMWSpiYPQd6o0yPSa60Wq5MjMIHZARyPGZ3mIxTU1VCB++U7h3mBNCYg1CCe+JWjA2462ZQOSp9kI629OfGDqycWzA246VfW22DHE362vwSGA6yKnF1Qj61HKbG1nWzN53WxkBXW/1ZvEA0zi4c43GZG63zmZXBYcoEmPWhswzwYJyNIFjozcVcyiQMsDWQMgSqWQjA1md2TBssXjbmFG1yQRA65uYW3KlHZAyyPgov2Pm3/WxelAVdCx8kN3qGyHdD08O8y/cuKCNQdG3zmK7krNRG0cQO8yXJKo1/jEel3mYm2vWsNDusc22DII7CXZWaY22wbqD0wG1sWWMovWkKAIVaiwVq5Ryo2g63hmeBXHG1yCM2jW2fWj20/WgCwo2/nh+2wSxB4bkohQYO29mOkb8Ham2HW8k7CfBG1vWsizjodO0e4ZI2p/ck67aed6CYSgwF2iXQAyIShjWEWQaab2RM6vdCK2ed7JMHbLCXbj4z2YxqgGDdAt2koQPauu3B6XFB8KRcpdw52Q2aUfV66lZDMcBLS7TG1h5Qm9TD2lVL8TdNB3gou0DC7Gwrmed6JYDXLLWQu3r+bu00tMu0c6mIxbMDnTl2pu0L20HQ12mmBksxKAS6eSg1fUwxmoJ61RpLBxX2h+3F2wCC524nGra1nzJkafQGmP62Xtb+2o6Aq4foCYoL6OFAowqTSgOrK5uNO1hDsr14yILGKx7XtkuvexAIxMHjFkzV7wmYB0QOhHQGmK3yRUXE0/212Lww7B2ScZMyc216WIYVO143D9B/be9kyWLRCLIJIkJKksxljIlCIOgd6yJZFzjG39CwffMwLS7h2jPNixKJGSnXBMdlgWBh1MLMpCkOgdU0Okh1Z2um2CLVuBC6RixR8njr0scD40WX+CcKOq68Ox7AnQzoo3xDh1y8xPYBYJlWaOoqFJEuh0+mcHlqOyh3yO+B2+dDuB16RszGQWR1t9P9n0O2CydG4uCEfMCysOv6W4TQ8z8Ovo3ga3BycOxIizFaRA8WE3mboYlA3EEswSOgh04OmR3yoAB3SO7O0IOhXDk2sDDgOuJ0Ec8x0x7PXCUkGizxS7x0/wXEglO/R2Y3O9qZmC61sOwXBifax2qO7h2ukex2V/d+3xUjYYvtAtnbeWGYH5LniV7VCoX2sabgfHzSdcLGJcYV4ga2DSGoxMTBdsqKzWoXK7AK3CLlxTK6okg6zXEtNCjRaZ3jO3zrnpTaLUHY4mFXYWKUkOrRASgNTbO5Gz5QY9qE0abAW8xZ0tXE52R7DJIW+GqK9ozhAPO8a63OssDI2T52QNOgyp8F53NagF0LO06a2oAfw58bcHBaq7CB1EPkdXQ9CJkJzAfWc53INRF33OsF0BRO52gujPy2GWPDk8qyVmKEknc83ajO+EBBl+fRD3E3a3e4geW1RBFHjeIrZGYuzazuRujSrP5G4oHHaoCZEpibOyVdsLl3NbGggV7MGisu4FE+ob9Bg0Rl036lHDiu+Y2gbd6AUUa1GVkbg1AVMmiUycOiKUbOTyuo4yU8BFHKusWh46eVYVowfbSusYH00bEjC7IV0h69LZVWfWjCujrbSMxtgSu9V1swHETGu/hkIokqx6u9dQLwH1j0uq+iqui6B0u9KyiQJVh/qgN1hsNygWu3PBhujV1k0RPLauqlHWA8IQAEZ+IxuhcLJu4w26uqvg9TBkrhu+V3X/Isi0GzN2Oyx+CyuzN1NCCvw6uiN2GCSAwIorWH8sVlKIuhFGhVTWj5uvGCSo2WwnmaSiKuyt3yu2ozSfH1hlukSg1uuVHN7RNg02A12jXF10hUXF3uu4iDF5Itr8ugbj60ifh0GBFHWeVzZ9ukzaa/GGinsT1rwbURjDgifUiuqV275A12x7eV1LYYljT0c91k0b3J7MNg0nuzQVqu/d1x7esEmup12Du8JXso1N0ChJ3y4qQ12AwbrbRkQVEBYc11kUGPAU4Jt0xUFQR0wbt1youd0ChKN0UwA1GCu8D1VuNg0HuxWVU7Nt1hseEGNbTEhUUG93F5Et39uIj0Chd93wbE927WP5F2sMV2puUcgj67d2c0ZGHcu9d2oCaj3pbX13kepBVOuj10ChEj14G51050aJWNukd1Tu1QI4ega5iUND33uwN3Lu8D1we9l2yUKPICmKTZyu3TZLqV9ADuqt1UmpyC1uo102bAt21ul3am0SUrPun1jNulQRUgUEgt6oplz0QPxLmgraoesz1hu2j3r0CD0y8XD2mekBBXuyj06er10ywXN26bHvDObESWZ8Cj2usOPay0I912ur6ww0YE3pbNj3eeiL1N7eT1XGtT18ezPhoEb12TunOi6epWBievL0+WWT3we6T0ue5D0+uoN3qEjgy2epL1KsWmbT5XCg/urDYf4P1B+e+V2IEDTCb4n927gPEDaEHD1keu8B4gGL1Kutyi9ermCJGdr0rEPEAVJXSjNevEADZamq1uzXaqQPEDsEJ1hQe/ihDej6308J10vWNUjQmWwzcGzD1De+zaNeyj3wgw727eqb1fgPEAmuqSh1Xe8BXejUAvusV3PejtBBe0rBYmGL0PuiN08MBz0Pe9T1felXZaewb08MTT3deoH1UQHhjiYPT0Volb2ne4r2Qeiz3QehqD/emr3tu5KgdOyIIohb3HlPcl1XeCbJHS6wG+2MuaBnFE0t7Qn0cdXML7cP6xivZHQU+uwRqSPj7E+3Tm2Ic3T4+p41uYFn2AoWQKQe9w5E+l7oMiL8JY0NFWL7YERs8gbmI7VUSeHBChYfcX2lc5n1T+QyjC+kvZKvDxarBfn0FaMzCXtWgwE+7LCcsbH1e4u+HrIGPCHWvIZUU+WmHWPioSvY6V8K4r3vW4x0Dss30v2+KXO+wzX+2inlQIQJAxUL20xOgdlG7V22x23DBMK+kR5mC33iIUQ6BUWG0R+jYqhiMJR3mc6Ah+u5gSUIUi4O/x13Ma32qWYOIcUq31XcTbSTwN32iqj31M2qB21QaJgl+qswlSmDCBISv29mBK6R+xfh1+g0w2O54Cm+5v2Y8zRwKIF30x2i63+oql0m+rswFiCMWCoKGGj8v6TYk0f3iAgIAT+gQmIUgG5XaR1FYUtMzpeL95pbSnWtQFrTU+N/56Ahn5TQ7f0C5I4wPvdf02Aq6xpacj5yVHcVjdOqFz+yS6m1Ij4fGXLjPjYf3YqhXCYWMOUT++2TroBwHSc516Vy+SlD+z/3E7Df3TdXu1di3DACXUAN6aOq4QU8f3X2x3ai6wrrnQoXjL+uAMP20iIZYj/3wBjAOkQI32Cwula0Zaf4WvGx1YzKqDwBhR1yUTPCAOtmAwZJV5K6cvVeOgUg/4Yt768iJ2NwfSiJQ4Ey5+v1aAjPN48ID8C1eWuF8BoByUBu5RKaLgPQ8CNY2ag4iavO0hsByWCe6BgPJ+wOBWjW618rKgPkB8pBNeO3LEB5p1zwdTXnWrR0CUFTBzQvMgWO52BCBzN7G24+IqBnB05+yQMRwVQPzmL30crDQP+2up0FwJwMGmOp02UMgNZ2uQPbaCAbJO1gOBBtwMx221ERwIgO9mCgNMBodlNO8B1heDgPEOTv0kyEfpUOytIurF/rSfXswZBj/YnUOtkFO1INGgyoLxB6LzJkPMxp25lZhBzMwRB2wPpOgIP9++NkGKq4yFYeANJ+xh09NMhHQB9677EX7BdB/14OOgrBbDcgODBqMlsjUh3nxEQMNYfoPzmXIO2HVoPuB0p3TBv6QSvfgNHIToMrBs6CW+4xjjB+R1aB4zA6/bYTWO6hB4ZQwpecQoOUwKSpe+Sp3KfDswhaG4Mf7EiolBlIOXB7LDQWE4OWYXYMx26wNA4GYONmav2tYFh0iOiUKsUg4j5mCqWWYO4PZOxIBTBzj61i7cxrB9bAzS8EPcB1zCHB6J14OmjILBmO0N+14B4B/BmHVODHA8V/0n++Wys0C1W64o3BFZQOrB6LWRMQcfmJAYkOIqnAPhIaGEXQc6ETETyBEw9kNH2xvlP+7QRMhtd7mQUz7/dQUPzvBCoHfRkMUh1qAvW4AUFQIyiZvdpymvLyDEB+kNR1KUMP29Pga5AUOO+oioC5coSK8TV778YIxY9QFoWvHCpfOa1gatc0PnIdr5/NPZh8BzGFFoBP2ZvDHE7ZT/h54DnTAmEUMq5PEEsBi0NJGHzCYg0HQlXfSmEuGkPdBvUOQRIkOO+rUOLlIMN+kzV4shgcro4YzR5kNFz4hiKUB4MNiLKUHRhyxgNhsEVS0hqVBcOmNhFhkkNsISYQBecO3kfKnHGodNjcKXnQFi4JyF603pd0RFVuhmAk4WjxSv+sgRd+7tjHyBLRdicRxtsIRyPQ1HDHmRvHyNRMj4q20OYWLolY6W/0toUEDdMC1V8ASsOSs1cPFhiUNQIDkDZm5kM3oRZAcgKkxCqofiW+gcOK25kP0htOj9Ah0NfvHcNt+lcPlh2e2dhxvFbh2FV4iwBEf2d8Oz2nAM3h6uA02te3Xh5sY/hit5zhssOAR70OeoCCOO+k/3B62XqqfL15HfHfKyEgHjEBw8OthxtScBs8OR+7sNI2xUMAIIBAXhu8OavJUNERopSNeVUPnhiGKeedCOMBvcPs2pCOlhp8OQR4APXnEdSsR4UOeoANG0EvwIruOprufdCCrsIiifMV1VToe3UkrfiPF2TWCzdAhhSRsSNCRpgWxtHSZXo9SRrWmSP/cOSPE4aSN/ldNram0TUrVESNkvVYN1jc8VGR93gaRusASR41zmR0MC6RjvoUhGXgSASyN6Rk7kGRiyE+Ox4CPslAHQMV1QZEMHzoEayP9yx1H+RxKwEMEKNeR22DI4rgm8RraTWozOS7QdJbJ8jSgr4bACJR6KNKeO8XeTO4SeRtKOKwHyPxRjIgD2FcRKR+8Xv0CKM8ADAwFR7fJFRqqNBR9+h+Rx4BhR2agpR/yPeR+qNlJXqCiuAeyR4PkxdRx4AzwUtpuRrKNJIzJYfsbqMlTPqNv+5gA9R42AdR2c6pvGaOTRolQntUVzTQT3giakaPxo71CAJJaNBnJZnjTPaO9R0qPZR9SKtwCaP7RpprnRmaOWm+aPP6RaN5RoEVTRppwDRp6P6Kz+3EhDdqnibMb40L6P4mQCIqo2WgtSje7//I9FqDW1amkLmgk+rVZMkGLZjJKEwvJAzQA0AHn6pfkjDew1ntrfkjpgHFIIxvkjtauc3uRvwJGnb9ZS3FqPExwzFcIO6O+R5cQkxnvpkxrhC0xpPn6RraMZHOBiMxghjEMbTFgIKmMPudmMtR8k58xyEWxRguwCxuIiAVAhiixwB5nmmKMKmvwKcximPcx+mOBzLEyKxoWOyxoEKjtCyOrMj9bYSUMDMYJmPDRmq23UMZ3SgbWOXrTWOhgM2ObRo2PNUCtWWxgRqh8O2POR/WNUxlG7qRq2ML7Pw32xp8gnR0aNHS02MOxolRex5yMTQ12MmxvWOtQZ6MWRl2PvRlI2sJbaGnk3hxHmOdIxykDLu0XY3IpJSALwdu0wWGcirnD8aUILra+pK2VzI4uj8BAzklxs1T37ZjZ4pQ+BzI2aTMbZFKeQS9WlgmQgUpadGmfLS1GQRmZBhq5zyOA4o2kdmxpQ/uMybZFJGwW5Eb8RTbIpAKAQaVuMYpJFCJxhuMUeBOOxqTkRcnMTmP+p9QBRNQJjxgKDWqYOr9bKoI3oT9KKmDONHx1yr/pU+ODkDuOtag+P/eBzCJwTC0WePZKf8W5xaWiAhHiV+P1x5rzLx26B8WLS1T2eeMCwSNWTxnuMBoQv7SiUeMWpQ8OgWyBMNufWNouLuPoELRL5xgBPXyXVILx1eM/x4NKszLBMfxp1IaIby3Px21Jq4C5F3xvOOpyztVXxudJ1QQv7UJ9uNwmSNXkJ29zhpf+Mu/HeNVBc5Dfxj+NB0zmEcqV6ij9aTxvWfgnHDV2N/xfhNayHd4frEuUiJwRO+x+NF8J4bUyyO81xAJ0DdWczLosMRP19JRMIUFRNlUGRNbAZROKalEXEhLQpQiYxBk0MxOHzBOPWwUjYiqf0QioZHr9YehJnsXQhBhuGNxhPT2bsWbmy0eUKQe7xMZzcb2XwqESCc3ObYxpM3hoAJP80KyleJ0JOWJokA+2spU+J2OIAUxkTnIflidet+zDNX9E9zLDbeIWF2IiZRwnmC4qpJpJO5zO706U2QgWJ272pJJ22eiUwookaEyuJ+pNu9MMg8MOikywaESB2KsjtJ+xMgiNWYy0XpPclHQrjWFCDtJ+HGwjX9AqYYKBNJxBObscTmI+hZavoTdgJqCpOJJqJO3e+Sg/6fAhxJzZMCNLJPssI77be5QjHmfEZ5QeOZ9eiJOTJrnDlQPEAUha5Vq4DKB3J4+RVJgZPF4S5Ms2z0SuVAMh9evexCQK1ieQQOiAMVVRLmgFPKlT+AlJ7ZNlJsmEExlmNHrL1I3gE81ygBBgIpuCB7SWsDSxzKM2x3EDOhvBitZS3UysNFNdU5FPyJ1mP9k4FXMYElMZLVFMUpntE8xiKn7pR7oEps/qMpsZI8x/hi0puyThRxnVIpzFNN1bFM0MDlNhLMJgEMIVMHmrlOkpy7Zip4lPMp2+T7pNpR8p08o5InBgspqmmAI0VPNkVlM4pMONXowqhBlQpF1NehJymlHGEx53H7SPVOtwA1MkPfVOSpsTW6pm3KWp2LL2pz83GpmWPKp6EXmph1O1QK1NYnV1NYp4WPMeKKaPACGDSeINNpRmww3i0eUCpg6j2EYNNggUNMmMONPtAtWPWAPq1CYga0iY2sliY+smjWpB69AihYz7RrjTiZl7tjHZhFp8h4hsGfbhs4tMFpnZjVpkckKuCyhjkzYETk2yJTk5fwvGQtP7J2LqLWTyrhRJtOeYizHeYj+1xxwPA0HYzQt2MeaC0G6GUyezpxPcnTH2MX1OyUNL3hsn3PzNPCckvJBpnSPEeaBmWyklmQ6PRcNLY3PR8AProc6OqUc++mRnp3D4+JonDzaaUk1c86VNMNcVXY2HTqgY55kq4T7VS/Q5V6CQFi+qwFCUckVrphObQXDzRwFDwHV8yy7iqlrli7R3VacAklS+p3SHp8kUWA+DSuhOaF/pt644HUkmYZ3DqRPTMVzY1GL/4I4QWfGDO+dfikScNEnqAtUHTp3nSFveX3EZznVEfPebJ4Op4LptmBi+ijMzpjjM9tbSrvayf0sZwBoG6oj7BvHdSiEdaFGnDT5XtNjNok2+ZrqQYIBi8cpuNKGjwZ5lWIZiDjIZhMWoZ+/DoZhLS4Z8UFKhbj76Z4NAVhZ17gZ2Z3ZYAHVqZwX0CYJjPYkhhxuNWzN0q2ayj6LjBWZ1kncLA9CNaMzOb+ufQVVFdMCZja7VeDDOFladr3p2GGKrHn0qZ9aF46HMnSZs5JfvUZN31Va0JZ2sM9zKtRWYVTMX+0RYWgzTMX+8UG6ZxzSLpoLOGZqvTFZx52mZ6KGzpsab4ZxFXgpz1FaMmTT3S6PxOZz3RH+4nRuZz16xZ0XSUpwDNfvcTmXtfzNGZ0LNLSagkjvdWOYJChQWIF7SdK6TUkvMXhrWj8VDR5bXRpyEpQ4VZIvafFzguJZmtEFEJfvMuY+xlNNIMo/z8UvqTWuVKXhotiSTvJFCuxtgj0iQhNzvC7NEqKqgvaEu4JXW7NkQhK7XZ0CBLMxa1rvH7O2phMGfZpWCPZm7NEqfWCvZvCnvZwHN0qF7NzvN7O3gD/Rw5isDEQW7MQ5+HNQ5xHPg5xGARx1HMw5o/zI5sMB45y9YVodSNiYNHM4552PlYX7OyuInOmR5mN52+mlOaR/DKycwHySVIENRdIHuFPmHWJSWRouKyR8EG6ISAsBXKcHQggFfnNaDVyx/wjxSwSPTh8/K+zmDVhZWzUfnWDZoCYQQWjv5X0oESbjzy5/oqS5veTIvWCwRDauaIaLnP9DX2i85156OLQnAseHQhfPYxw0SbCRtxqF5kCYN2ESA3N85/fhaDQXP25iXOhFH3OO/P3OWFKXPj5WoEBFOJS7GyWSNKAgZ255F5B5g7jzwF6Rs5rfpQwPWSUyTdyAqRTZR5wWA2kJUADxyWRUmJ9x55mTaSyWZwPJTPOm5/uSDkUDjO5wfSULW9zt2ZjZQva3MEDDGU96V3PkSJuDuw6IGASS5S06EnT5zAhDf6ZOPy5q+Ty6YfOR56vlGLSwpzKfvM8rW/qviEC0a/GXOfxauCI/YXOPxHhTz8+PPvsCeT/5OAomIGDyYwZGJhAulKPs9hIu5nTDT9dhS153jpe5o8T8MSfN35sBXncEfOgvHfOQhW/Mb5oJIOLPDbv5+/NJuNHCPwsPM/5vvP/PZPPcJWfP/Pb/OvIV823UZRm4qIOY2vPkwau88iivDyLmQOAvkJYOgnMIfAR4N0DSeHAtoF5AsyRTAsXmzBIIF3At7Qy3WbaxAu83cXB+psTJYFspKoFpAsLLFAtyu4gv4FvlORUZgv6JzgtSxEBC3sDgtAVKpLNIDAvaAcgvrw1guKNGguUFsQvmQCQvP0NNOVk74rUUNsQs0CMAAlF4gZgEACSY3oFAgcwrjAmE57MeEpAgFDrWMVUCDs3gBmFiwsymbAAMgawskMQwCGFwmDjAxwvS0mwvYPIECSeObBJgjws86Mwu+FhCrMAIECkKI65BF4ZKbIBwvhFrGCRF9fDRFsIuC6HdBmFowvZ1JIs47FIveFtIttAwmjIYHOQuFhwXRFtSn5F+ItNzeQC9Ou3iRFp5ghFn3BWOfmGNAHwtYEPwu5FuY4FFpovYZ1oucsdosBRC+wxF5IuVjbwvBFkRD9FzIuDFxovDF/wuxF3SDVFlzP+FkwteFxovx4RCAYEBwsLF5wtJF45KrFzYtO0DYvsqQOzyAJItzyBgDFpxwsbzU/ihF6jZAOMwuhWExxBAI4svIEKXeFjRIf4KYvv9S8A3FtzAx4S4vNkaErtFnaShKH4sShjz4uF9lT9wIEundHMbeFmeBAVQ4vpowBJ1jFwsQSNqDpFt21jEMwvVlFBDUgJItuw377QlrWboQH4svWF+AYlj9gmlH4ty2OmFLFvGjViH4smCZYiklvfKUOfosJoQbqklpsJRYH4vWMZiCfFjdASKLku1IaNGglsLBu2AUu4YT4uCQUCC5FwFoSlhlimWH3APCOqCfF/N6xEG4oVS5UuVIIIDx4LWGkliRSr+bUuhoXUso0Cot41G+LtF07T9FXItHPeLzslhZahXBUs6wJIj4ltUqDPFzH7EOW7UlxqwHGaUvWnbmCklmzDg4XIt4QkEtJFk+wkUH3BikQ7NIlmbFxhLkuh2DYtKqBOwfQJIs+aoKL4lj02hoCktNMBMvrfTWBAljxSMnakthlptNJFrsiiQREtJFtLZS2H4vU1ZcqMlp2ir+I4u1SdJbRl/kTllmsub1cYCklrYvJlg0s5lnsuhF9YvwlDfow2wctOF4ctYEUcv9Fm4jKOCcvsvRtD9FwAgJ2Ccuxvfc2Vlx0uIln8SLpOkveHG/Q/FNwtWuLktXcRkATl+V6tULrzWoLEojqdgjnlkz5K5Ccsn6rUtB4TGBXltWx2IXItqCKMvLAc0RPl1QiCoUkujLI9C5FwxiGl7B72aNUCiuPssrl7hSJHUhS34ZwtuaUGC3lj/nnsMCsZqoaK5FpQT8efcvz9W4DSl/vhbECcu4l6kDfl5DCvl6LDthlkue+OmONAL2FKCXssdSgxATl2QI74IEtiIBov7lyNQeBCkvbLVWOcVolJoplMsMOUuxoVq21dwCMvPOPcui+g8wuY0EgcQCcurJK+S5F7QjHGNCsulxa2xlQBITlucihoD6BwVmYtqV6/iElpbi7F1EqHcOfbAV0yvzWpbGc23IvKgNEjHlJoCLk2CwflnWB+l6yvmkL5jKV1jBOlo8jVwK5wRlubCKF6ysXQbKBHltqpmV3mD8l0Yv5CIgr7lovDRSCksNWGivxVwzVHUHEt28FlT7l86ykOH4tSSwKAKV5cwcqJsuP+ucso0KEIlV2ctoV3gBTlgIumF7B45FtYvjlhqtuF1EubSjPnwleNiWFmKttoAotdV+wslFyPrwlRquDVj0uGARqsZFvaAgliatDl7B52F5MuzVxoDzVqwueF5wuNVxasuF9avjlwkrKFpoEVkvQtVki3K01bOoPuQyBDWzYA6FroF7VpskQlNkyuObhRElh9IHQaa0gIV2Bwl4nDQ5g6huFqqCtFqbJYlFpj4CB4AuYkVR8Vh805vPiDSliR57lgrQky6UuukZ6vzW9zV2fX6ueoOKubFKxTFV8+LKYRyubFZlTC4fos0ecawvV4JwPVgmtPVi5g7VusQqFg6vfFUAxzu1TEIoc6uBEdMBXVsa0oPQwCmoNlJfYBwuR6CSx7l7aHLme4sceJUjFpv4W18JqvoEUwrDVy5Ti1s4tArPEuNAdUJ7Me4v6xDQB0AeEp5FeeBjlzm1N8DWtWM0mtnFx+AFFq8B9SdKsLjN+yOVrco/VpqvY0l2B616GiulxwsGIEax61+HTW1xwuJEPWvqsKgahF3mtE1ymu2RamtfFGdjHVhmtnVrNPDWy6sNkvNPs1oEDiQJWitUI4sSWW4BmFymSlCCkuvhVSIuF897NQBitkSF2veF1bowIoMt4EWKYuFgYINobOqdehOyOVoEDXmA+b4VttCEPOutKzUf1Bl0EgI1xovsuhOtjlvgpNJMwtWJfk691hKCd18uvPUh4S91zkwK17OuGmaoRjl48tCluOuzuK3Jjl04HbZwuvvZV15jlmvAfgVOsmYHuvTl5OsHSAOv8Y66v9Wo6svHMOvFybQss16Os9A2OvNqWgEzRkzBxCf4t8nbwjP1wzXMIG4vv1n/ChFp8Gv1swuP1+jAOFgBvf17wslTKez/1l+vgNrutBnKBs81jZYT6gevIjZhC+1qRBWiU4vcZOTTpF2aQ18IBtkcBBtAgM9z917wvAN9yCINirw/wAhtLKEBuFuGRooNxOWyIb4BIN+SsQN1uvMNwn1219huDIVisSAbVbr1xovsGamqyuDrpS1jeuyUASMCmeJh71mBBz1pbh+YU4vRzTJAml1N6pvWwtqzWysuYjdm11iORbVLkt/VjRuuVEqxEl6HhRl8wtW9TirTl5CzugbwtUazOSOFrYjbAFssWNxIpnEJqvASDRvcKJiC911x271uxsG+vhvENhsFE1jev5vCyLBNxpSAUPeuKEIhu1cJpIVl3gwewdxvBNs5h0IFBtj8PMuINvxjIN9huZNjIiuFr+shltViPEdItgN4pvpoUpvoNnJtsNiYsevB7OpN5hqE4zauCUa+zoN6/gF1xotFodPjoNp5qmmVIvL1LetNV1x2617IvVBIx5jloiqeoAZv3MaGhjlpVa2NrpsVpOZsuYgZCLNlwu71Wcz4V5lRYlIECbNq9hb6HhC113mgboNz5IoI5sDNlPjwzfhsCAUZuNF4MadIKwsMXC6BmF16ZTiZgCO0ROAp17wsPNtCiQJ0htLNq5vZ1NuGccXZuOJ4JytUf5v/mupugEcnofNkNAAIOKuuFgBBt1/hvPN6euuFoFtWF25vQtlptYt/htkSXJswt/SRvMAlvmkWpuFF7LB4Qscv/cTpuUt2ssjFxwtFkb9CRF1RpbNiWsj1vcsdFlSTMNj2sgcAyuNF0sFASscvkBXZsqg622UNmzC4tjotNOMKKpN7xo9FyptDN1Js73WuslN5VvlNgovoSpsL3FzVsTl7qzB4apuqt0kvMCEBvyt/Bv4l8YxWN4JsewF5vPF250mNxBsbNQRvClt1grNpluPEKkvClsEQpNkxRoEXZsHeHjGQVtELiNxou66eRvOFUNvCl/QjF2c5tEt71vhedxuHN+NtnFxNuiNwVC7iXZuc8nBvwtn87rNlMsxoa5vJtilsKSZxJJg4ts41iaBlt7ZtRtgts5t1Zs7N0kuioZVuyJAbJIt/OLCtjxtf8UeugDIiqHFs3SAmU8t8KCGsS1shDrNwmLrobEvTMG4hSV1YKKSYeusDBSt0fBavTnFlseVp1j2FgIvNlaGsgIHEjzF4QyMhMyvC9CNk2tqiqvl4j7pVsxyNttCsGt/Gsqtmuv6ttHB3tvVvYPKbEG1l9uNAN9sqgbJvGt7B6gTR/3VN0woUt+KFLJ9BtvnKMu+0DCRC16Ei3ACDupfaI5NV6LDcNxoBYIB9KJHRwuEt4DvNkLWuLl2XAFV19tiJR2ucrOd2EPE6IlqIktjhOKvk2Zi2mNgJb81mWvc1ystUIfDuK1hjtvF7xAimFqupia2shmo2t610/hHWaUturREuwexLAmlqCWj13aw3oITsPtv9vU0eHZBl2XC8mOTsj4upjAVzB1xVvaF1QVoACNqMvUiECxWFoUqkdvGof1/hu4G5TusdwpgCwKwtO5MmDS1k+zKOGzuZIJ4usd7pP41zsY96+EoGhHCpJg2sGv4Lzso6BTsE1uxDrNihFBd4JtKA9ZsACbhSHFgooGnaWvdMfSjVNthDT1r9vQdmpuW1lrnvtmBsglpvWEEaBtFNgot5dx2ttw6zB7lslTZmz+ipNrnCj1uYiNqb9vBN60CkRQh664wTsS11UjrN1bq6ifdvX8HkvYPTLw/hMcvVmOls9jA25NVgs1jV3rytBdBt6GClvcXPhTJl7+DYiREvEk2EvVNmrt7l/il+ybEuld5DuGAa9QswROtj2rzYrdjNUnqEVumYZpuKyADtNV+dbT1o/2Gt/othiKoQBdvDhBditvwlI062QcsBxtubty0IZz3FznlhMLEqCM0msfdkYHHHNrvg9v+jJijgh5V6vW4twKWngFWsslPex6YwsoG1sQwY4xyuebaIw7d1sJS2OKvFdqru7d0evE9w4sftvKjyEQZAU9nLsFFppC3cIGv3t+Nskqt3pZN1JtDOA8A9kkNDXO9ptK5AVuQlcP6pRm1vgatGvZGsYi9N7PGIlh+VSgfHuv88OsH6apLhdhPnUNiHvVieds21y2HFpopSmYN4uGvaesg/WDtEliCv/V+vo38QHveSgFuC90KR/1n3C+KE4vkPQewIdr2E7EGtOdjZAy5FlA7ymRGuo08WsvmJKzc9reQa91eAkjEtt6cAng6d8zs41oS09mglv/qaPt95W0w+4KYKEV+a387afK+dqVC/iaXts7GCRCdvgj099+Dxlukt9na0ColVLZO0d6t+MPrtHkU5ptdUVybFpO3Q14pgqbEdtnFy5LrN3Gs/6FHsLN03uHaMbuOF4XpJMbnvKKBDtMtwCgCQbnsyibYtwKZfDc9x2x3t6dt7diAS/4BvuqjIlLQ10pysli7vtOZvscmR7unt/1svVmXMNd5ATkHefuM92LusNnGvTMGnsFdkaSF9xDCV9+/uAN+a2/1wyaFNh/uold/vUgSnuSBK2hA1ynsggYwwgNvVsn1z1W6mh+CyaL1iR7dwT6U5oAlMELRAyA/7ZDaJZMBbCoecRAJtGw3jIYIxjTcG2m9MbMZx2hAfZLJgJRStFzeDPHBIDoSoRcHEgY7E3AXtiLh4cLX0MD4MwmcGquK8RRFsD6AfAiFsJukdnM2QawEthLGCy5lTjmiYQc6fAKQmKL3kB8dT6KKDLikD7JjJhfR2s68Qfa8KxFD50tsTOOGQwI2LgwDr8JwD43PMDzgeGDt3O0SA6CvoF3iMDv9h0DgJjaCbgcRKNQdBI6qGviAgcthU4htcQjRLc9noihxfPB8n6TWoT2DiFNwfHkXmCoZb/RUD1Pg0DmwetiHPisD+QouwSwc3SawdwSVIAM8m6SMOlCRXoYiJhDwHi4cQVABugIeYuSwoRUQod6I3wdZDrX3mCVinB5tIduhEQer5xIexMLgfsFYtTF7KwdsDp7hlgVcgtDrfpoDpQcNYhtzSZfwcB8LREUpNR760lsIQQdVITD89lCfYocHceihLczmpkIkjz9D4iLKBw1pCD48j8DrfqjMN5b4ee8TqsabAbDxh27554R4un8C5DjPMVKKocqfIyXQcO4fTDkxJgqNt3EtMYckeY4e4RU0IuD99j7DmMK7DlDyGUAofIejodTudYdgj0Av/DjYfWDzHjllgEcXtniMTZ5jxYIcStjYESvmxsYLKmjEfuY3gtSFkTycwtEegIxmhyF1EfZHc7quRqux4jzw2RdQkfZHY1VJ8ndJ0jstNq2VPtPpakfzmjjSCJNa0+Zak6b+bkeBBcOU8Fsgs0j8nxYjk8J/KBkvSJn1Dx8y35KF/EcNJcUfqIb5uXrZkcnhBkdKFiIDFAC4HCARAAeAOcDbgAgAQPHACTgHq0+6rp3J4MKzX4MJRn8d3RJWa/CWmA6ABgq0cZ4bIiNCQ/BBiCBTNZd0d4F+eHGKA9tg4fdpL3GfBIWS7sNqDvz+030xOjj0cuj0hQJ4Sgixj70cC+Va3G2TAgJEOx6H4X1CWheIjBYNUH+3cJStLZLNZ3KhTP4YbuTKcC7WeC5Rlj5uat3TAhNmO+p8ndRM5jj01aEUJhpjy4gM6KzD2j5/BujgXyO67sdxjwMcMikJDf4GEhDjtzBNjtKCNYGsc5uLxRRjgXQqEUOyYEG5ZImlNLZ3ZcfdYPMcNWAseOjzfDU07MdTj7jBcg/evIKUcdhjmMcDjgMdLFcCkO3MggdjijSejyAjsRdVjEEe24dKKKOU8hXQq3J5Sbj1schIKAhN8VWB2j0gigcc8eWj+0e1KHX7lzYcegqfGRlfLQggcXQjPjyQ6H4f8CiEIwxMWBdpoT4VgpwRu3OjiCe4T03kXjkCd7cIidXtK0dVGMr4XANcDCAOYDDpvLKktvH3eobUIqgHsdSgVgikIvCs9j5jiwm5icT6mZTbg2+qtofie8KZSGpXLAhcTrGiN21tBLqJ/ClacHBeZjKWWQZcejfAXyIfc/rLjsTxa24dAUIHcdaT0NSdIQNAqT5+rLoCpJJKGrAKT5dCi+dJTusMidUuJ/rCKMSeU4eyd5wYRRtAO+oIu1gaYEPMrq8rdAx4ZZRewrRqSoeUJ9YcZRNJICd8Thyf2KcKdt+51AWVwJQroQfCNyPoZ1j/Sc9oZXySKEM1BT51AiTp5RnMEZQuTnCctiFkQJooXL4ESeDJ8ThStZa0jlTmiqePWcouDcpQ0wDYTDocTAgLDDE9MfVQAEQ+a9I/uqtodEKcEYqcNXHyyYjcpR75cfhbOiyu1KdyeMg7ZauT2pROT4ScOTqAiqTrzO34XpSxDXUitofCo5KAHguMJEfup8bV15ZoittnyP9kJvgLsMCUZRh3HKRnyJ08KoinTwW495E6cmM66d8Fg/RW1WIjMEakiXZknAbsK6cvmhUdjne6f/T16e/TppJ4MR6cAWpoMfR++GpsIRErHYlUlBDXMRJTriAfdHCZ5OToQZ1zBSW0zi2JIn04z5BMocGE5u6Q3jBWkJIjIe1aNEdBPNw6hkNYImdQxP9LNMWtIl58PywQzT4e5raL2YMWlWzathIz+Gdu/PmeAfeJh2zLZjqYJZQBJXai3CjljMg5ouWMUhHjBQ0EyZMaAKz/fIYgqXS7MZOPEz/CikzgARJaH2GCZRbB41L/Y/ELGcFCgWelwgbFvGZMKKzqGLWoTVqiWlDhizh1q5xw0FozvGSYgr2bOzspauzu2fszn2e2zraIydUUm5xp2dWzvGQYz/mrhzzkjh3C/NBz4lWxzu2HuzwenshmxKoVamQgELPMlPcfzvSSOewcLlySUK61+oKOeVEBFoCExH5Czts0ApboLUNOVIYkvOd2z9lZqyKNj/5b2f3CW/OVzw2RlgN6LRz0W25ykUEbFcudRz+2eE4FzLcWvWGNVM2SfzFGeWPAUackaee8z3uf6QERsuSxGeOeDUATRNeflFGid0T9KbrkxI54+5IdR9X4ivwDGg7DhobKyQZyrJVCC4NMCoE46zAUkuX2Iae+fZEVCBvPN35Xz/W3SmDhLeGBQhvzj9ymcfsng4N+cQKuGoqcZJjNz6F7gI05qJYVG0PnZKrvwZY2vWnvB3SY8FhKN+ewK/aJ0IBIg3z2wZykCA5uOHYcRYqEgCSV+fnznQZykCxDKHI+cUxE2vKYYw7TJChe/EexCEL28iJEaBdk8bIj88UgLh1F+esLhkX09fBcPz1CApoD+cNg9BfHkJpioLk1qZMVCBD9DhfK+HfBR2gBd1kFhePz5zT95vhfqLvBe/EY2h103HKmgmqJhMfRdcDS+c4hYBfHkRlDBVX4IQLgG1X9JIXdJJJgA20xckL+5a+3SxfELyhdRYZ206L/1jCLsWQmDQBcmffxeuQFRdeLnBdiyCBVYLtxePz6ZDgcK8BOhPbAhQdwZQkRIR+MEKBRL1JfKUeEEok/+W83bOivqAJf/1Xm4/4L1SWL3xeqtaswA2zxfCqApfNz69GIVUkSHgHJc/gKxcOLtJehoA6fHZ53H//LeGKoYTXxHIT59LvGqRplsBAzm8i9L2bgDL5zKTLwQuwN9zHvTvKhDL4CjzLwZdwsKZejL7c2ij6EXLLwQudIUPizLiUjCaxuoD+7ppbzfsbxsKW35yScatfbyj7Wqbx01iN1ayuyh01lpdayKzVmOMV36QNnVSQUwyCu75f+pWBNklk97vL6VRbfVUSAMl5f9w+HihAB5fFcW7lyQC5Hjw5d36QGXWQZWppiUVFcBsaS0mfF11yk5QW8ODt0Swc5ccTDEEMiUW3Yr31TTMc12oriTigWv86AegaBPqGE53L71w9/FldM4n5f0ruapYwFyADBUVSXLiqZ0rrS3+UVYhA6tK1WUMygeawVdYUKFcSw8YgM1HFeLDSxi4oD5fArzrAiR1cbgrnRiBSnv7QrzGSTUWrXwrnabXLp8bIr2rQrS66b5WBD2okAlczwvFdjzgVfQkZKiokUwVaWhFCf02sD9jalev0u8sjjBldi401dATDlfMkPliJWkNc64xVdUrnlfHxWjJ2eaNeirr2AvLiNfLTa7w8W3Ff2rEfqnqe1eZr3gm5qDFeOUMlgUWw7gor52ByrmSjw8XpFarvVDAiQQN6r+Vd9TMNdiWmVeTTN7wirp5dckO1eSrquC21Zte5hSgNI1L7A2OV91KQ6Vfdr2ODxrx5fZwGyh+oG5fjrscHqTHAJPLnWFWrpEGHSw0hur9u2o+idcSyQlfXS+8GUrpdfeUVS6LrlNfwXF/3RrwxhxwrAinqH1daJZ/zhqMlcTeDJKOqHNf3eF9f5riSeDkB9cTxmtfA+G9ezxhtdqwVy5qqGVcnrudeJr89qHr25fCSr1g8TMDfodQSafLrOGZ4XdfVsWtd7wSuApcQQK17VwNYby9RvrzdzsqNDeZ4clcEQxIWXrkz3Ab6EiiqANcobkGqFqI9cwpkAA7z+id00w+e2eEHi0bDtecbkiivURNe1TKihJNu5d0UOBL4qRlesUIGhjUw6VckOyg+sPihprWkzCUOYg2rxuBPotTYcuygM+aniiBSlSgCkdSiqrrSgRwdLy0bFpefRVFE8b6RF8blX3Tr4bxybmzewmQEzi8bje2bgmBGUFzfomITfzro6bCr16ihUPDITeijryb7ddxUY3gDuolddLx3E7A6EUA3HajjYWLoXpUzF2gU5eUldMANhFLhjCSLlpb0pVKUNrL1eq0ATqTLf40W6yFby1S/Rk5OJxUVLlbiA6JxMrf80I0aFb6/6AxutwbaGfH8T7FBN0ffFZbyhC7osNS6bGrfNbKrdKEvGgpCFKON5UsGWUB1TW0ZASlbvreLbQWRG0LLc+W3DFTb4cE93dDyuqewm+FbVGQpZwkIWnbetwaAo55fTZjrez20yLrfl5bbcSYIrfxEk8mAeOrfF5FA75bB7cChX0LsogkbWE9inzozbc35CvLqTKWjWT+OihlWjr10XSeD8XcvBUMNY7ukbceYEmhC5TsH74lxAbgmtQ3b+d1oTVHcf8O7ebxcdSECOA6d491D90H5XzoqHfYCNTEnb0faubGmzvo+zlzuXigI5Y+hg7kKjo7i+htxFwmNb7VbCe4OQM7/vJ/b0bc07/wmxgEHddpG9yGyt7eeUObeY7p7cuUF7eECVUI8UD7fW0LOi9bxZQ35C/Iro3bf1EhJNRuFnfNErXf47kVQ7Exw7Y73XYw0JXeD0AndI0YFIpuHHc/gpDxDbxgRi7i7e3urndjCJHfA0X9Rw7wneC7kngM0TEp+hEvLf8cYl2dLt3XTKuis79OQg7jXc6hGHd20XCCN5S2iTb/TkaUFHcvb6ie0TtjfG+yPIC0H1Rc0P9GhiGdxVQeL2K0UDybyfug9byWiodmmh/Kd9EzwuPLpb4mi17/rc65QjwbzTPj8hemil79z2IcwjyF75j0jTtmgVgpGPLbs2J7m+beV0AdBRCzPhy7meKsTJcGQBIGhj4bHjFbBfeM6/WgkW0DwmKcbcnYcfdeg62jD74WiD7lsH176eiH70mXN7qGOfb9vcz7pru/b/veh0dRWzg8w7372MKa0XoxIJWfdGhXdufuCfes7k2u/uRc3F5PHcH70ff5ghbfi0J3KObYve7xYQyT5efdZuGE7B7uA860DEHdE9fdkeauD90FnSV0SveD8IA+EeLdjF5Y/f4Hv9HFMc/c4H8D1XZFveOS0fLd73Ogzo7vJP7qSgIHtuhv7l9yNw4Ilf7xeKSGWnd/7/OgAH2Aswz0dPFq7ZzERbqzwEReUiHjCKsYMHBjO9SQHDlHCs2A6y0pYGyAXPeSzyp8x1WY8UA2FQ5EpFvbg/A4oKIMsBGc/Q+t4LxAIuSPZaH5phj4RBOhDgoKwyCwYbDjZolIGlgd8K9LheBRAuHhFZiHoCf6IAJj8/MJTO++pwART6HY0sw/DJhpZ0QcZh3AWcxkDtmCAEBg5Rsf3YSA+I/qHr6H/kSI8PG7NgLCEX6hHg6xyH4I+p3EQgSH08kYRDlqxTklVBHqYdPNbSe+HnPi8pO2CLaXgkd8LfDVHrVUY7IGYcEbv2VH7XitHjw+SHlGStH9mmeHypgVjTxR9Hko9h8Jw9DH/o89TZOPFHjvizH6OyZ2XZJbWfWO5x+Q7U1cna/JEC0bH1N5+WGaY6EFyDx4TuPGMfqyjWD539Hh2yiEI48v4E4/QIpw/d+omDI7Eyw6EDw8BMcOy14cY8FG07qmHi48THgIVzHj51NGmf1unCo82H47BnHt3NR7EFwUBOTHwHJ1gScq6zheaY//HpE8yH8uKonqWzuH4Q8THtGxJaNPe7z64HE4g+cm+h5ActYUILspY/T8Ctip8DbJHWaBBNQX4CnMV3SdMJ+CMn2GwfMcWynslxicD8kJBiaBCtBDk/R67E/T8PPhhhNJa/H0fg9sA8AUnmuYqEJBBWiTMsShZAhEwDpDViJxhdYCkI/pCvjn4kY/CnmQ9dw+FqyngpBY2jJi9oJk/3cIyunsjDQWn10AsnmtmssBIgUnqxR8QDpCVoe8hjYBZZ7GrpjmnoU83mVPAdIX08UnrPBUntk9PNIU8WsIMSRb26cufFUGBBbYx6Jo5g06nZj2czusLL8Zf+8V+rxnvqSh8OM9JHBM+Az7ZfO4vM8u8HM+xZLM8nhVM+MFxZdlMOgth8Ms+XrFph1nxxNpnk5eCHjYb/IviZNnBp0kbduzFsbs+2bQOq92OcikENLLZQU2jHU/s985VQhlBV1gMhLwo0pa0ExsDwIOsLlrI69NjWnD1gm1SC0vMg05uJ61iQW0cN5lz82t4DmCdnqc+fmqhuJsPpRqiEJYGCGvOeEWtKHn88+kEJ89DngrZdn3lhhiKASTn0ggfvITlisPs5MEQTkKcwC/6Sa5PjBW1jFOZFSHoFvA16zcyCjPki3zdPEQfKhb/npcHF53ZSLsKhv/hqGCPnpC850G8/ssIU7j6z8+esSC8QWsi+f8aZNHntUQVjeOZ9UPc9fnz7VKsX89JiTko7YD88Xn3JrIXwlPgX+pOiEFaB8XqhQBiBRJl66C/LKteRFbLYfoTq1gkXlC/QsV5NtnEASYX/0Q8Xwi835zwiwwduZ9URgJNKpLRX0Ps9/n4nCubIy9JiMMooYoi+Iib8+x4vC+6EODDNQHgRmX/gilfT7WEsEc8psXM70QddGaTNUTxQsn1B4si+nHJua92OZS3j4K+mXirhdSGIquXyuAEnjPf8qEk8EMp5ByYw5PBwOCztWPMnssP1CUQZsbcIIyiuFeBScGHHzoEbK9FXwUQlXgq+CchzniiXp1mhzdhWKRcpdxKHiHJr9Pzh2iLi2lZM0XtpGndKhZBh7q8VqoVqtXiwEf2Y8yG2hq/q+0a+3NSZNdoAXKZX0EhlXnuZ5X1K+LsRhZ/4la/RobhbLX0q+OsBzMo/LpBVX9soBsg0bEsYi+6Vw/HulnQyGFMV4f2D/nT5VxUVmQVDNjA6/2XrFGpmSq+vXo3lNX1hbq2pQqmmQ/Hq536+3U5syDX8OisFc+SQRYcrjXx0igXmjEf8oAgsuSa9DjKWwPJr68VXjoBMh9sS+cpqzhFxkSzWOa+Iogq/A3r2wpXna99u3cy43z0TdQfgwQSTG8XoHYjGwaM9lRw9iCOE9hjci9is3jc2uwQs+cjkYwRKK9iIiLssWuAjZs3i1g8301ORTTm8Hm7m/C3lTgC3i1F8pxZeXIhOxc3yyay3vEGi3oW9PpFLeX7Cpwy2sCqPdURJZeUEdwcPLc6+ZR0QcSLnm3//KG31odvUULjmCb9yPe0Go2tURL63lGYn2KdzAzC/mHcb9x92i6KmhG2LI8PGbPdCf5n5uyXuw2v57uX655RRv4zDkSWg1OO8vD+2+nCgur3eYEyVwfrikOOlIZ3ywfjnLLm3uf283Ramdn5A7hHOumSO3z4cI6S2+vxb2GlcK29/xduEQcJHd/sWaYAVXMHhD5YBNw7zh+7ywqLeXGKYsQGMJ5uu+H4Ub4PD0l7F3zPAsjP4dOw0e/S5cYdLuw2pE1bznEmYWph3k2ZcwWe9mcXHI3DkO/tTWzmJK7+2x3jSra578sMxKO8ikv9jt0wYUn31wanFTPJJ3mv0YcZvK233vPG32qqyOTu/Ou+xG+3ywrl3+u/SFIqYAPgIqEYCIWu39nNt354We3yobdw79gN3+vYiC4uAuaWTQaw5icDZBQbGqte/poTdpOaCeHNTA++xcVB/WpVHiyaWeFScD/DOcDSUiVJpIycUB+7Cx97c53DxWzcB91SEelu/Su/VaXHgBceHfVaP8U3TXu+8PmPLL3pqSiu+h8MsrKQJ3t34X3ofNMPlyWP3/KTX31O8EP6HSwP7e+YZMyQv39/p1SR6bPCmh/m57++4VbmLrwDR/GyLf6JSAiWlcFu+9cBfLAPuqS9TWWaC4Izx8MqRHQPiR/5eVYWaOekjlcdx8iVVx/5SfW+kcZjiwSXayGC5ovISM0pCPpB/BPzX6LCxx9WSHx80cdB9HIJKGqP+R+WgCx8JcM28pP74XiP7jgE464Vp3ofMTQgQW334wqPkB++lPvJ8R35KrSPqp8Eu+TgUP9DhXolOEsPzDCaAFO/KyNJ/tP851kzA+9KcadH/CuJ+CcAZ9GzT+95Dh+OazZPjcccNKmPoZ/ocCr7DRVp/xXvecjprp0cFPh+sjBu/6wYaIvmUTmAqZmQ9UPDwPcRVRVcwQpPZQvKHP+QrOtS/g6qdmTyFY5/7qU5/kSfP2OJVeD6cwQaqP17y/xf3uKJPLl6FKKO/PjPmn3w0x6yBSQkPqceIg3l6O5jZaYzobn9DQmIQguF825v1tezXZ/s545rBVNF9aDPMlu/ISzqPxuHOwne9MDmx8NKMHeWcSF8PCY3MYvn2EWsTAcgv4KpvjSeLBcHCUKjCHzBcEl/RiWLmcSU2dPP2geZaH2F3PrQZhKffLdadLgovjkFMyY+KE6Fl+XPuqSehiV+Cvtp9GiC+myviR84voWRYviR/Eh9xIcmNrg6HRF+hSHrj3+XiWQ2M3g63rKYnRRIlFOetXHYDVpKU69RSCh59nk5pe+Cz/CP1JjXeaTRpHBL9WBk6l82U5zq/vWB8fOYDUJC718qG5ph3lXYLQa+j5OvyPhxq4xh2v3uroarLDqvj7jJviJgbPjNwgIq80nS6N9ZYa5+eU8N/vvXUxmdLcnLC0kSlvo/D2rBxrPkn1/5v/l9nk8pWev97L8Ca1/Vqy18Zva18LKtD4qo5Rp5vmoWFSokCYtEt9uddN9ofS/Jpvod/8fXt+Tv5Y3Sz4V9vtdDUuQQBqd+eY2AfWN/zObt+c8JPxjv7d/NOB1/oz0GJFOKLCE8Onhhv8TA4Ijd/8/dmoYRR0mGEeIV1zUqVrvts3NnTIL3vhFqvvx7isuqBGN3KN9Tv3bh+v2Ny6I7vAawzd9BycVq4XeDW3vp99zv0eceyf3xwFVxGXZdSaPOD/C5X48iJvyd82v5D8uUg9//EXrIdOPD+jZ1jcrPhidxgUk96tHfDc8fFR0y96QY4/Do/2U0x0fnF+TvjxisLg0J75GKVsfymAzTcGBJvjmUrNCqqIFSPh0QdJhkz4ngw8R4I3md6RoVa1CTvpUjA8GT93edXiSJ6047IC+hDs0PwKQllrg+FynvLvmV0fxbz8fvRfULjj+tv9nHPg5j+9s11znydj94ihj/sUiJeUf4smuuTiBKYZd8c6hz/cf96TcYOT+R8bj8ef00ysfpUw8flTgxS5XBkLgPjEh/j+aUCRcB8Zloxf5JiOOYlrcllT/0WYiBM306NLL4QxsuXYiJnquQ5ftfxEgcW9wpsTUzhNlxCdWBmFf2aXVnjM9/kcMK5f4r+xZBr9iuVs97+Gs/3cNa0B+fL/S8Lr+Vf6Gdcc0dN9gimhbc6c4N8RD6aIWGz03/i4hUCsL6MfWOjCKlxKkBphlIeMRS0Ob+ynwGiy7p2iR7Bb/jfqdlaBHGcU0RgTxMLvldYLb/A0Y9jIBD5gZtsd3Jw0AVofRrOY7078kmkC9/8aATzECk8OPa0RS0Hb9fhIMOLPdb/Lf44VjMJIQIoPhQUn7x4H8BMIoIPU9hlKi1guFMgUnlBAIkR2UyUSwLnfyYTs9c0gUn1b8LhPHCHfvb9puohk9DwaZY/wdmwBU5iNWZxNCfUi3OnjdPLCfShKnMbC6ZuYQjf5ULpoTF4k0K796nlH/xhZMKmW5H/Ppl1gX4V0J9kBHjhZ8ITo/8X+PdI4RS/lGgt7N79JCCwcPfgH8/f3wSff44UKZxn8k/oU8IlkUmh41Tvzf0x0/fp8Bp4PU/ffsIAhuy1532HprHf8uh/lSYjOn6n+JsD8pGkTb+TCYDrK4f79jfsWhm/nH+afe3/W/6WlEOXH/2/i10h/osLTfhvg4TDi0rf8P+3bDPkDGpR18W/FwQkCk/JLcfjWosX8+/qS8R0YUze/r7/a/6V14g5AVofcTMl/pP9CnqH9+ukz5x/yHiS/oqiR/oU9fMW5Z+bub8ZhX3/l0cTdUWD3/kCJJvi4IU/SINoSfzUsi0n7pGNCfjck/8f+t/0+gD/0P+cfCv9+bnb/in/X+JsMalKkTv+W/tOj8rjbXEjwH8rS+v+gI0H+JsFTdO/xf/ZCCz1V/4M+N/zkPu/05gM/wlj2MTUJ3oAgQVo+bSrHhXCTCXf/gCIn/d/zOeKOIH+M37KonYgHP54/kawQ/CgAUX+dTysXpABlDg7Bgn+qq5MIINy+SB8WiAB8AFohqVmhLBM/pYI1HZoAXABdAjR/mLQ6AF0COyQGTwCsB/+HP7b/umwlAFh/jN+xrxH/tOil/7xvLb+Sv7XnnLeZf5q/jeiCsLNDlwB/4Yvfsb+a/4TooDQEgSy/tD+vSLmIL0wf/7Dnh3+0AHWiMre6f5a/jABK4ZG/vH+lFyc8tyQzv63ft+GWjI5hPqUkrLP/uP+4AGwEmoyNIRd/ss+RJ6dOk5C4xJj/gs6Cf4MEIoBPmgnyGt+ASLPhNpYowiuAcMw23hB/oASI37J7M4Bfv4o6AvYxaoJ/k+A3LxeAc4CDfBN6ICQCzrOaEjQW5JH/umi3ggWugGEdVidjBM8RVCpAbrYucqyCAkB8BIqHEv+0QF4BJsUT34WuumIbgHpzGfwvgHIAVc64WZKsOvoVCBO2AEB//59WPkBTgEJ/qemdpCQutUETzyvUNiIqxJ2wO9+mXiaAQUBl/5d+DEBKhylAQImtAHYHLRm0rqtAVtYfraT/uMBxQEKSG/+wwF7/gEckwjhnLIgHzodAckWdAjuATH+T+SiOCXsF34NAfw4JeyJ0DwI3si2AaMBP55BAcAyPQHvfv+S5iADAcX+A7qGeKtYB7ZhCJ8BjQG9WNhmhLDRhFIISQFZ/uWcNQHFqnEB5Ai3AZGodgGjCFYkm/5wgQ3w7Gw+kLEBdFw+uqoBB1hYAT66ugEC8oCBOIETAdQc8XgqCJxue/7YSAf+TojPhIeOLwF5IIiB9wEQARrQsIH0gU/+fgHB2FMBrwGnAdgct/6kCP8BnCDT4AfQU1SXAc4gj/4DuiIBnNjcWtCBjwHJ7L3gkoGMgZYIRwHEAbSBgAFRHPCBlIFCHDKBhLDYUJsBvAJtCOv4hIFLAYGwkSKrAWEYGwgYgSMBUezcgeUBEQEhylfQCIHKgUGYxfTmviAY5A4+PD6UzIhs9DdiqEJugf+A7phMVOiEahBiGELqKFTqfNggU5TugeAK4zjkyAWU1YiyXAWELazPHMaIePSRUF6Br3hKIIJSZv5MrCma1YjnnG84IhR0KuecKmwZDIGBj5wEfLjYboH8nhlkhYG6ED3QPiDqVMmBRYFSIELqAlywkBSyBZThgWGK0JQksJPKJYGeoJFYibRT2LkYLyR72NWBqPxw9K/80rI+lC+gyvQCEio4zxxTgRdqOIT5VM8cvmBjgaWBcrCQ2E0EegL1gbIQtPw9dNT4lrI+lJcQjvStuK2BNYHpdMKYS4HlgVjazYinEKY03oFBgV/8o/peFMWBgQKdgSOB3ojqVL2BzpT6oCTag0QxEM6UeYzPLLMEQ9jPHO2BAlxfgfwQaCpw9PCQw4FzgfqgaVTJuK6BgbbyAStKjDhzgcWgsFK3gUwQ0swdBBRYH6CF1P2Bm4FYWO04kEGNgW0sYPBusoRBefQq+m22y4EDgdgENEFMQveBZXSMQeUM3YHnDFhBSzRkQdvO6e6kfpEEjE6D+qVks4EBiHPIYYoNov0mtJifgb9IFip+rrWYqQJuPFawINRyQeDCSRTrGKcihbxaqK8mHbze9IrI2ZpaQS8QAFzCMl6B3WrKOI5UKkgZDN18e0qOVOzIVLCtfKHaK/qaQfWwOOo8VCpBfl6QAfP68kEOsMgIqjpSQWhBDRw+QYoC/oF8iKMwgQKTQnGwGDYMOAJcQNhlmhAgBAIOBG/MBiBlKi4wwbo3gdy8NShtwqci3czGQVzYypRbgWFBuRQ5QSKqrVTOSAjeskGLmMTY5ypKQdgEpcz1fIpByUGLmHbAtUHeQQU4egKf4K6BLbAUDl2YNkGyEHZB+NpdmOLIwpQC2EA4mX6jRhlEyGy+5PS6G7zAjNSAhSrpWCV+q2ZjQYZMkbBscD5Gi0EzQVFiSUZtnkWeDupWYEtBG0GrQY7qS0FsnptB7X51fnOIh0EzQcdBq0FkqONBS4grQSV+jOZ4+hU4txRl4IgC4I48KOfciNigFs/ylqwotMe4P0Ex3Ci0MHgAwYKstQSw8NPgbdwdUF7eb+ajJF9B3CRu2KdiC/rHuDjYMygwpEHeF1y85mes6BAmzOy6agTW3NyWm7ij6pHmoyTbGPHeqAqQwaTByd4gwVeke7ix7BV43Kw6IAPErDKvoKMkOWL/eBjBtxid5KXeHBScypDBs1h39DPIGkGPxDDBQsFb9Kvyj2JIwQnmniht4GjB2sIfWnMETqzyviR44sEz4Mke5eZQwRsoXMHj3ijBDMFD9lckHepqJGik1z6f9LzB2KTBtCfEpsFYwUzB8N5u3FdYtMHjoJjBrPzx3i9BPaw68IfeQIrA4jTBl97iFPnmJMFuwX/egsHMwVb+V95b5oDB0hRswbhIssF5DgwwTeagwcAkOmypkLDBf0Ez6IHBcMGwDK3AcmiqwVDBveandEpIb0FCvjTOEqRwwbQO484x3Ha+tA6DATfcQIqK5gnBIMbSctIMcR6JwU7Brgy6JBfmZ6zEhiXBscEq/MbmLVgmrIhgjGSUcJ4oWcG9wRxInMIs5qKsycGJaNPgMsFxWBFwucHkyIKszLRzwXwQGUg8rEy+6cAmzmbBA8FBlJnB1twdwbw+Ui74weo+e6Aozn7B5IwGMiXmZ8Ha5jVYzuZnrATBCj6hwe3BJD6pQp8k1NwDwS/B+qxrwb5w8yycBOckbtiJSL3B/ySzwZtqvsGiwRI+P0GT3GnBH2oSzmHc2cESPgcWCVBXwcHBfOj6zmHBVki3FB+IDBDIPpViGkj6/DFIHsEZSFgh0T4IIa9BcCH5SCQh79wQfkpwqWy3wc3BZT79wX3BUCFOgIAhsCEFWIJw8gS/wXfB6j4E4m3BdCFVPj3yrsHnwabYiMF2wdwMBti3JN3BznDiIX3gYCH9PkzYyUh8Ibsks3zfRkHBT97p2DKkZCFKIdPyJqT9WOEOgnJZ5nHB0z5B4JwhYCFGIcL0KiFwwRYBa5KrPvTSXQ6bwSRIycHHiJXBrEjkqHbeIeYbUjiERz4e5g4hTj4R5sZIniHyFMfmX2A+Ifc+3iEwhIA+DM4kSOXB4nCFwTio3z7VBJwhIbA4PlOOiSHCGOfBTuYISK184L4m5sFI1QTnuHBIYSHyEAPBfiHBIflwz7TsvrfB/ZI+FFAWT+BVISA+JiziSHUhWgw8wOJI4SECDkPBrEjPgvEU+CgaSNWwZbj4DrbOtWJUflkU9/jF9mlik8E4qIfB4yHFFOrmyUi/BOlwtXDcSI6EiUh75rvgfbCAZN5IkSGlOPa0myEGIUkhlUhPOJFIcSH4Ie4hLiHRIQ5I48EhIXVIHBB7iG0hcr5azmch2CFgFk/gxyEKDCFIf5adSEa0+Uhd5qxOWSF2Pr7O72Lmwb1wDyHvYhi++Ug3IRlIU3zTchchp8FQoUNILDjdBKChOyFmOJfBZSEiPmLmuSFipEzEToF8CsvUlQQ96HIkVTALbq88XCRRkgkQ/eav/FIK5KHQFiGgUgqXgs90rOB01FlgpvQTRB+UKQoJLgnkKnA3vrm0DMTAdPEKG2QMxJShT7xb0sAWFiD4fIeMI/IXSlAiDmD07q88Z86ufJnkQqEkfNShKHBKoRgi+9K5VPcIw77cTLjEVnRkZOMsRUSwRFEiXogn5K/A6H5h8D6oJKHUtPhMFvx8UCq0GqHz8nahPEGEntYhZH5dOmh8GHTU9EqQ8qGPdGLwyLxC4MO+F75J5i/gln6cfE42hMghoZF+gnJ8ftT0wiDDvq6EVsyPBJxAMmAnvsFUq3TSflr+p3B0yAwsWKEpoXGs2aE0VOkuxwo86DjImjiyLscKDKys5hcMcX7RocagBLzK4NQuMqGcfgS8fUisLpe6nOYVcKGhj35+ofWhL4wYIicWk3QOwb3gZWCQUDc+FhhdofJyPaGHPK2hrwZWuOxwShjjmNzOaH5VoTBYV3CKYNPoKsiRykbO6fB4Is+KFZjczrkqyLwS8oUuRPDkxP6hPPgt3kTwDjzgIi1EtH5jYBuhpcwrNBV8D6TtPEYobaHYOMJ+Vshvoa8GueB+fibIcaE/wmiiqqEWTp/gI0HxojjOhcjGTI2e0oQJ/M5M2t5nQZp8XAqxgAFkyHpZyHBh6Z7bQTm0MGFoYWre0GHyEOeQ4ZzzQQGmb5r4YdBQhGHNfqRhROBa3hhhOppKagHgw3qGGKBkoNAMYWf8u0zFbvA2uKgSiAS6LXoXIEBMbGHxJoHsQEyTwL3CXNBowPRka2xobALsQmGXLEDGsrTwZHjMQMY+uHKI3RKHNjn85eqT5EmU2/y0FP3k7mq9omKoNsyiYZnetajKKEuCGsxtumKobd6y0FNM5agbTKzurBgfjNphEWwN6KBa6mGN0HLibXrKYUXuUOwOYXHufGzWYR2osPgE0F1MYlrCYeVurhCvoExhw27e6O6oMOzL5LMcYxodqCJhuuiAarFhpmEz1Clh+IAoYgoYIyKLUFXupAh6YaFhGnqL1E+ohWFz0MFhAWF5YdFh8mHQeMVsS/ypYbIIkAR1YRJhJYJcIE1h5YZT7oxhtmGc7jnoOWH8bB4SlswlYX1hn+6VTINhj5QgCNEqZbK1qCeGu4JpcHp6kWEEytgY0mEmYTrK5zZqYUNhMGDLgkZq/GGUyuIYEahQSomwAQqTqrlhg/DuGIlh+NDbQpACpWFZuhoItyJXYYQIuswWYanQhsoPYdthmO5t7E+o9mw15NhwtyICuvHu/UyJWp9hiu43Ydaor2H3YWDML0RDTEpsPUxHYethhAj47MmoV2GGyvDhU2FLTHpQdRj6YeHu6WEgZPVhywhSYcZhlmHVukZhGOG67iNhU2HG3jkIxWFnYfzQb8IQaDjhFrrYIKFw35YPoteo7zo6qK5omtCAXMdUK4DQFI0UDMSIEAThkyQpwvzhy+RtqBdE3OFqkKHi/9SKRIFhnOGdqndhQ4To4fLhQbyRqsdhZYSAIBJgEagKYZlusagTet0SoqQ64UHgk+Si4beqjmFJyrthXWE1hIrhsOEF4nJhj2FLgjThFyIW4eEgRVCLYVThgQGu4WciImE8rJP8Tjq07s1KROG+4bler1DhYRag82H//iHhvGTNYVXwvpyTIvLhrfjWaNLhNNBd+AbhuYb9/nAIl6q64TDQt5I+4YbhjdDJ4XMipuHzAerh4mFjYev+rsyx4dbhply7qnTh8m624U7hQIG4NNJh7WGigbThueGn0P+SreFYRoaBeOGa4f3QeX5aYTJhfm4r0GHh0rrI4WHhsAHZ4CbhUeGagSXQieGEsIHsLmGZYc4m7Gyjqq9hvdhQ7DZhg+GP6rmo8uEt3G7hseIC7Ivh2ZossK0IjG5KgPthJ+H8gnSI5OFhsLg0i+Gl4Q8y+OHQYv9hIWHW4U3qq4z14Tha3BjX4bTu0IzSqCNMHtT16lauJppAykIAJH6WAexuJvoiUM3QOpjLmM7uZCAuaj04t24IEdpkamq07takWmrsKMloSOFKYdFwYxIYETn8rzhIxjDMuWpIEQuEcqAa4UQRKBQ2olX8qQQ15Nf8o6qttKruOiD2aou0LbphYIgRCLh6QjARNWTrEl2gvmqo5P0SoBS7jPDkWggZqpeqeBH40I4Ik6qSESgUgODuqKIRcwjD4YIRj+QeoDn8vBGCQqfkhBHyEIARZUy7qmgRRkJ4IIf8JQT95NIRkyLhhKzum1yXqhYRuu7swBFaJhF6QobQzfI34Z9MiBEUwPP4OKFCqNt4LsDUEDAeqpw6qJyYiLD8MAAQsU4BET4ROSjYKM3crExBEVQGnVh3qJRmwBAfJPdYikQEAg6wS1LTWIpEu/LDNMERodibDFME02RRxBPq3TKBEU1k3UCNWHkRGApqEBMQ5SB31N9Sw/pGGFvISx4BEbioBRj2IJMo3hE5mhos2+BiUiURYhCxEeFozRFkLG8CTTD/Uq5YQxFlEU9eB9yCDsKwr/zLGmqg9fTcpOfMSBAoTmEROZrCmEca3lLhERIY2UDjBJsROZqQuHPsx8BgEbxBEBGOuAJBHRScvipAfRFhlG6cnL6lFDxsFSQoYJHoAWhGGHbwTRHPEWDesBiwhF/IIBD0FFxYc+yIqPFQ8RjhgAGel8h/vLiIyqIbGgIolRCHzNl0UWBRPOOUENpIGCnQ2k4UKFx8shCQkdoebPjIYCSwPRSgkWz4Anz1GIjQnQTaWC8RXxEf4DpquGDCsIyiTRH17GyqpRhxhLxOaYjQwOgY5dRJaJk8VJF9EexAnx75PJyReCyMkShgWCheaIEY2dB+KIF4Ohhf+qL40viYuDUoYwSl4A/IVpogLIT0EJrQkQ/k/JGPEXc8bpA4GKjSxECCkdOUfREMsP7YJTz3ET6g8pHUNHyRTBijLEiaHxHUkcmK+JFIgn8RoSQt4Hc8VxENEfKEpEAJiDKRxiz2Vr8eXCi8wIICfkRYkUriMMjqGCiRJzxX2EDaACzukQiR/qRFAs4kPJFs+CyRQxEwSGacBJH0kXSGUJG8kWSRYcqPwIio9pozEVKgFJHuKISRQhhvEQGMEOL7ZJGevnSDalTIshDH2CqR3SjokRIY6RCTKMGRaEalkfcs1ZGSGMKRpZFOhOWRXpESGOC4eBAKke1ADczdIr6RjcIYyOoYxtAC+B6U7YayGGGRAihYwMoC8ZG2aoI4C15RkUvgCJFv/BoCKZEDEQ6R3pEzkfU8XjoFkT6RUjQ2kRoCQ5E/EdWasK4hES6RX6DNkZ2RepFKItvKEBytkVLgg3DNkW+RepFUUlXMVZE/kZFQogJlkf48A5G2LN8RjQaYYUiEsxwTGJDosUzJ8qI0pLaJEcpQRGHIjkiEO0gwUTg0PX7uNIhRsFG1fpBRn/hBiJdOmFGF8k8YRFHrFChRh06TZuhRZFHIUUSo1FGpLORRA360YSYmQOhNpHlENxSnXHbwhQ46qI2ovGahJKFwSuKnXPDsjOES7gnobkiNkUoQSuzyVIJRWGbuaKjOVt6H6K1uElGKgupo+c5swDbE+Ao3ROhRU/jnfEVESZQhjPAKyMSOZHu0DA4hwkig2Wrc4P/k+lEg3IdwRmHeao0+WhCqNLEwqSgF3ipRF0RKJKXe1OiyoWiRShDOJCPCvFGBnFNsYFQyUYGcMeK4xMaqynTjOAXC6lGQml2Iq0STmtH4dUo5wobhx9QvJHlEHlFU6KDc7lGIYGVqZOKbzsoQ03JeUQnCfARjSl2KhtTaUZe0eVGIVNZR/1xv+lpR5lF7tGlRRlENUQMRSVEfVDVRR6iOoqvkxlGtUXegsL7HyF4+VGGWoTxRClG3kb8+SZqxUYWRVsIDcMp0JWzh1CFRz8x+UWpRAVFpqAMEEQoLUUkEUVHgIhxR8iwxEHrIO1EbSuC4DUS3WL+0MKJ3SADgcHTsusLULljyjFdR5VEtUTagZ1EcJO5qo/hLXDHC70BN+KNcS8JaqDrsW1FJJD9RApwgolbMG1EGOsxMylEGOrJM+Tw8Pp9sP4wNKAI+MNEPAiVRrBD/QJDRTmpkvp9sYNH0qES+ljoofglk2WrPIlZRD1EBOkvCe9hz6Jf0ZsK7qKg6U1HqJEjRWWjU0UkkKbQC+OTR41HQ0ZSYS8InqLMU7mwCURLutDq40QtRNx61bKRoINGV9JHI0WR9Pv6aotEjUeGqQVHDqIGov8qmkX3SF1GhePnEMeQnUfLRgtGTkAdRThwa0XOoKu78HF3EJNHKPk4B99KjKDVMBtGgvpTRThxcUWnOpNHtaK7ErwIDUXNMAyIjwo7RDxoN4slUHVHyHINs/zwVUU4c3tHazitR7NLCUavORNHqIMSheNGDUSSqaGhS0aLSXNF4zjFR9h7E7DIkM1F9HhTRK1FMKuHRC1FWIZ4RrPi1KjxMr7zqdHlyR4wE9tlK2SpzIipu8mjQQGBMBdFkdJUqQ64V0fAsHipDrjXR5PrV0SXRgZyYctaoohLKLAsUJEy0JOosuHLaZAG4t1GD0WeMzCB7tMqRfdGaUB3Rs4xKGE34Ryo0TLmEjGS8dC4qzYhtEQKcZKhLKixMNRFU0XMqylTyaP8RI4yBVCGMkIQsTAHyc+iImBBo+n4bSp3Ryahz0VP49xR90T/g+jSP0QDhtKE5BF8qymQkRIUEZyofYbiuSQQdoPBYClEgch+oDdEbSsdA2G4rSkHsUyq3qBosZGTLFDWo+9HGmiZglXhIMVTRMDFIasIYTfi7RKgx19FRiKuyH6jH0WTRRzSLrkQxIygeUFeMz6Cj+KWyV9FYMQ/Rn9Fr0a5RfRSzjOO4UnQ0MRcicDG2mmXRkeFIEH0av6hAMaZoWyoJUAIxyDEQMZeoUDGc0VvRDVRC5JmGXqoUoMIUzUJr4AfRs7iFDqzqFvgTEOJRvXBguhox9uhkERQ6oVSg6Pf43DpawsYycBFU0QoxHmjFcIIxqXhkfEYxojoO+MoyF+FSaKpRVuiiOPQxNjF1Qo3CIYx1XNoyWCj40SYyfeh+MansQeC6MfU4xDHnIJYO7L7YMYfAkTHTMIjcAroOMbUwnlGLUPYydjF9FIXaVjEHaBYxwuhmMU4cMXxIwi9kL8rd7ptqTjGqEsUxnMLe3i/KlB7VaNxhwdJyUdVoCkq4mi4xDTFlaoX6SjJIgoVRKTFTQrP2ueypyt0xWBH0MSsW3HxeMcQxc3waaEExTtFTJhDCEzEPGvkxHOgjMZfextFXaDMxXtGF2jMxNx4heDJoSjEHaJsxnughSJs0pxTWMoUxH1iyoVox4ap8FD9qejFB0ZDRZzGi0kd8mnRqMaLS43g3Qtsx3ZpgMm4M7aqkvHzqGLioKn0xpJLMkRNMpaD9MZGoeqoE+N8xXBHVIH18iUJIWK4imD4vMdUE8wpQ4FYKzL7PtKSaKH63MShqJjH7WMChDp73Mava+2wwavkx7jKc5JYww2DiJCixDxhj2six0DixaKCgiRKi5jbMxyC/qJxIlmECCGhoouassSMw99IMsf+qKjGe6DSxKGpQsfMxCLGUsUrMUjIXfBBqfLHEsU8eMGrPMW9CxzEQCOyxmTEoagYxpwgYsZyQAXzLqOqxWWCwlvFwHLFPYeYwotGPMb80CjEu6Js69AhGsQEcOQrnJlp8rlyOCnK6MSLGseMKDrF6sVaxu9IbQfCxILFzTB6x8rG5MVGScrEeaAKxzrG7MVjoCzHRCmCx0UIrMQgBEuhRsWiGSlE8sbp8dBQJaDCxhnyius4yVzGcfMyx+rH4fBGx5OjrMUDw7LGvMRgiF3ho6vw40qFazOroCrHndEIyuTEDYMSh6rHZ0e2ee1rLNE1KNrwHaOxMczimXGbRVvSeNLUmB2j0od9KbbFtmiH2RwR9sVwqs2Q8NF2xsdHNMXreK9LFaFn4J5LDqvjIEuL94b8xDqGk8PKE0Xh6cHn4JRRzTINqK7FWYLFo87HvOBpctWiFwr2xeSCIsZBMs7RWJKix0oirvl6eKGoTsWe0U7FPsWho1PDk4WUwZWjU8FzMXTCWoUr4jLHSCLtoAHG8scDwRFw3QbSxtEQnsWEUtWhGiAex9yzw8HBxd5zj3MRqUHF9OJRSMGpgcS+c9mwOnuzkz0pDscIqNqGnOGOxwirPsaTwKdD5MO+xGHFRODnReppqamnolWgWZrBAMbGRaCpAkqDMceTq8/ADEXeUpujhLHu0EjSwOmgqjzqZIJ68fWg9ZghQ6DozaGxxCaL+whLw0mg8dPRxj3C4jN8QwU6ycTYOqbI5oNIGKurjaIyCYaCG6g5o2IIMcTpoU/iKccHor5BSZtwUWOhqUm3odp6qfMeIbqiSoD4gnjTyUFLocHD5vIw0OJQ6sFJwTgYcFJLk1go+cZ5xx9Q8cUpxfWxKkscRLqFRXEleH2zVqHTK2nFrrA2oCVxWcRNAiLoNqDOh2nEnIqlxz4LacfZWyY4BPIaGOPgFusKCQ0D16MBqeBZ0jOTo23hxrDuo4QzA8CrquojHGngWwfBKnhPoPOhqggEsmTB1cVVxlBBKIIbaJXGFUVDkfaF1cZSwe47AjNkQ2XFSdFDQWXE2DhlxHo61II48GHAqsAu0LyC94HFxcdDEEMtxHp7f6Mhsq468Ak6er4gBvjGOU3HiFEmqh3Fjca+IQpTHjhfM83FTqMvRov5uyirqgYi56KtaTXYVcW/w91pXtEXKD3FWlAu0J8h+MA9xwyKtqJ2hZ3Hf6PJ0W7RHcefKiLrrcd+hcnF3tAmO4PE+oMFqX2JLKCrq+Ah6+Cbkan4o8SWh7+B2IA8Ard6lcc4qi6FycTlxGWa/cUqex4gzcXgWnxiRYDDxt3E3DLVxCebXoYDx6uaWFgzxjmoxcSCECeaw8TtUiXFycRTxqvBTcfZxE3FA8Uyef8T48XlxSXEvwLDo7PGkoK3eDKxgYXWiu1zlgLvmNBaK8Rq4BBZMURLeAkR+yjbqLxIrRkc0OvHq8fBh+FFjnM2cavEq8drxc7wQSBRR3S6TZhbxhEjm8TogBvGK3k2x3uLtLCecACyGosoaQiDgGDM4CAQyFDwCRKQ8/EpkBRjVImQSzEC1nCosh2ReCBYsIFiBQma8PWS+8d44ihCZsA4sJhiwemJcpZFcrLl0P4R1kYnxRXRcRMYsT5jjQvsYJgLtkMNCVQhJzPU42ZiHYSWw7BjiTDXxjhi1gPOKxpRsXHIQy5iLONng4YiELMFi8vz4EBs8YpSvhLAsefHSlKP6tpGx8d049FbakYHx9hj4REAQ3fGHdDAgiCw9OIs4keBkGLosAuQm1gRk1Cz18WlwLAJV8RLYpB7B8RYYCExkcBGw3rj9YsnxBZHj8Sl8q/FVzBFQ+hi82FvxwI5PYZLYCFRVzFRYloaz8ZIq1QTjYgkIEiz38XaGEETLyh/xgYYKFF4sxzgd8lTiSpFftODkJfHQCe3xcFiWqBOkRhiJmOV8cAgyGP3xk2RyVKyR1/EjZJpUVRHD8a/xT/EWZMAKl/EGkd48RvRv8JawhPTYEUVk6fBeFKnxVAL18BwquAnWmMJUWix58Y2xpqLnEUl070BC+AAqrRBDdDucahDD5Dry2l5vyg+I4dCXWMksKQLASFIJvvwbygAqlPJ01loyIhSLJOgQCNg5Mm9k5/JxQoPiKAzTJBq0ugQJoLoQDIo68JoJ4yRvZG+Ip3AI2KoJ3gJUtOlEnIiKCYDktSBlYkheKQLD8q9YCPESCR4JQglIQCIJXogdweYEAzImnGjgnZhqsOTgoir6SADwuXRqMmWadZjh0P1Czmh5nAhQYgmUOvoJt0BQ8MWUwQkUAqnmMGCI1LEJ/gk+CQHYIzImnMzAngnSID0MtHzHNMUJCHRvZNUeB/E1YJpcLpwcEKLkbgk9nM4orQkvwBIJ9QnzYhs0JbBVCbm4MdjBMv4JCVzEsEMJwfERyHmSqth9CXAqdh53OF0JwQKy4L0JRDI9nHIJ5QmqCWqI8QnlCSUJgirKCdxiR1wCCWEo8vFYAlt8bYjNnHNmTYikImcJRzSbLueaxvEh1kXyYSyM1ha4pwlTnGGg1vHMCg5M0RZxnBcJ0riPCakszwlG8bze8ThXCU8JCvbniq8JAIngiVtBzFHNBge8FLCvZIfQjm6M8S3u99pVwMag+mzHaLmugCL50FiJ7WiGPH8iRoi60q2uKqKEeDIQM6yRUFe4HQD+SH3AKImpuAJwzTAj9KSJD7hnMH1MLyCfuIqYAlA4icTQiEwC0hAMfugeuGiJ0pAxEJB489DSkNtxLlDB1KeQtJCJEKpsivzFSD2QIom4UDvQNMzTuBXuXoiSSIOCObq+0JqJYCR7ui1uktL4SqHx+B4QOFokG/TMiWlIytJnTNwgHe4mYNnwlazGiQXw1zoZkPKivrhCidaJzIm8iewU8eCIiVKJ4sK9gaKJFNBw+BKJbom6iSp8DFAeuJug77S+iRlo/okhiYKJL4jntCaUVFA6icJKAYmKUKmJFsyUiaHQXolBJNDionqZiUeIpXyEooWJY8IEfC+4KokxkDCEhInkslok48L9urMcBahlidDwz8REiV5KLYkxxKBMN6hlidyJP6KxiTaQbJ76iZyJZYmwkHB4GonakHzO7KK5iUWJNFQnDpGJ8sAIQBdx7FBKhFWJ4Ymx4PSJ3YlSmMhgOHoY0v94i4m+egXwVdozieIgc4ltiTOJnXDsoniJm7hbfBaJbEjPSD2JaKIuUGeJPYlXItPQpYJG0vk0yYmEeCjQvMABwP2SNYnOaAaQpzQNiXeJe7hXgF+JO7ijfCYk/rCioo2JFHgwSdqilokTeOBJ2om1ibe4wEm4iTcyMZD/iZ+4pYm7pNDA3rp4SUw04zib4pWJNpCOkAWJaElqwNxiB4lISfokNElw+nBJwaQUSaeJ5zLqpN3wzwzoeFeJ1Ek9YoRJdjJASYuBuEn8SUeIGEkN7igydKQoSa2JctBm0rukWMCISQocg5AISdduXYlPuJJJMcR+ieRJslT50MOJu6TsiZ7Q04k8SQRJgXoGSbukNMBaejpJTDTfccuJrIk8Sep8jEmNaKpJqFT2SV/sikmzif+6TwgyScRJnElkiUeJhkmSrIF6Z4m1xnJJ124mSfEEwUlcSeOJQSSEIphJLkk0Jv5JwtDTibXGRknC0IqIGtJHxhQJEUl4EFQ0/aQnIqGJ1XIjIOqJidBOKmqJwlDviXSkcYF8SeSJbubv1PFJeUn1crVJSIlBJEQOJe5sSSYkGYFUieME6qTNSTxQoUntSTmJkUnEficRN07M3mekAWDNECjRDCQfrP1e2mLLLB8JMZ7rwtNJX9DQkJNJ5saLSViYs0ka8aV+J8JrSeGcVkYfrPc0q/jrScL0c0kjSQdQO0k3DHyO5/jLtJ0AM0nHSZtJq2a6SW16S0njOIyO/I5rSRNJBsZV2DWeXjRPSUdJe0nmxgdJ8gAXFI0oJ0lZfrZccCDPSSDJH6zsHq1Qf0mUjhIw30kwybdJ/0nwUddJADC7SfDJ6DDfScRwADAfSTekY0mymC9JoMl+xmjJhMlQyebGSMmQyStJNGGa8ftyOMnIyZdJnUY6EWTJ1MkwibTJDST0yRTGG0nmxpzJwMmsyadBbaYAqquk1QSJHDD6KeAJbiTwQIkQDnRhhWQA4F7yAEB6oK68gvye7MQ41bBKyWSymHrmmGjUeVigPtRYaslACu3acexaycbOYxxMerg42slYOAT4FToWyclYIXjxkGTAJsneWFx6xslpDiQYS7ppaA7JMA46GnbJNvpTfPEwqjjUvBU6pTjS0soacXpflArJFw7PLBxc7Q4OyU6wF1i8OHqEsTCeyVWgxyxc4JYODsmkDuay7slp+qc0krwWlPFCnUrGyfEw4oh5Mi6YNsk1QvLJ5cl01odYq5AOycXJmVh8FFMQDsmuyao4/OzaiLhgk5YA2NXJ2w4OyXiCuxE2OLhuxslq1sORphhVekPJTnFUTBd4pegZycxxJcm3QIXJHcndDl7YBckPOMnJaTCRQjiIxslxyUkYe/CTDkFAmc5xEegg8snByYfJmrgTOLHJwcAikqMYg+zmmCfJzyzFPi6Yd8l5CalsUPIKya2IV0Ke7OTaCzTZLI10ITEDvP0uDgQE4gvJdcmV1kV0fHpFyaApRgSNySuYIClKyUc4HbwwKfrJb3R1ukmYSCl3OJZ6qslTsirYQ3zEiPvJNtIfQq5Uq8mtfBYO82KEKbDaT8l/ZESuW8nCIOgpqPrGyV7JdzgoKS/YfbAdMPApDaDEOCwp7JHU5HHsYIZVyaucVaDivAAp9NTQKRwpycK18oNMJOBfyZ3JiAlnyfqYnCle2PrG7CnUKXiCqMICKVvJl8nqhph6YIYUKZbkN8n7yZHJ7rxMKeop/skoVNa6eZjlYiopsBF0KYvJJOA85H/JmpAOyRwOifREeIxwzcnmoNz0RikdyfXJuimTGrApeVhY9N+gvCmKyQbJkyTtoMwpwSm81OesL9hPycAKMVgxIm/JoCkoVFbJ3pj5stgpoSnxKQ7S2pwGvDXJ5NqpKaa8cSmfmGgpwYFRKbfJkAGf8i2YK3qlKQYp2FyVKV4pkCkVKdTssck0KepUZilSKdvJCOr2up3YOilwFBHyEcmSQCf8zLq+yahu8cmj8m0aa8mjWM/6Yyk2yQJcWilVKf0pAgQt2LgpfSkhyQJci1hHBkUpe5h6Kc3JEuB1RKB6DPB1ydLAngKfyRApcCm8TFQpdSlKyVwJsImwznk4pvRafMrcqNiGmM68DynumAJMEwZqaKcpbykP2tvYBskcoc3wBpg/Ka6UtewhvB8pWtjZEPAGgKlFdErkurwTjtgpHDQ3QjuI4P7FCVDyGDqm1mKUn+BGvKUgIcmu2LUpXrzNKbEYJnrEBinJ+fGc7EmGtimHdEkwzfBkqR0wzJR+MNpwAKmJKZLYHLrZ+qCp7pjrONLAuDhHsKcp7KkgyLIGjKmz8kopmbxBiAfyMqFhKbdaO6Db8oTArsAF+ueS2ArWmKSpLynUVDhE2LGKqaYpOSl2vG+s3PR54I6xiKlZKVjk0qniqWrWaAomofRoeKmWKSTk9Gi/2nLghinMqcDa7ima9MCpd5ggYGqpkilOqYypwcyBKW6ppymq8DLsAKmHKWLUWyk3yrXysuT7KV14NVbuvNCpaYaW3InYEuSTGkmGxKkwCgqpctDmqbREwwhevBopLqn3KU548cl05FSpGGIpqUeYVGjxqevJRWSBUFlwpEYkQLpYtHG/QEVQaWDMmjIUsbpz+CIQqQgXiEVQH+Ah4BEwFzEO/u6gUwQtqfzQoQB0QCQI9yzSurnguyidqWBIt2ysYKN+9hTh4So2Q6mdANK6zS7oTu0aCqiLqa7AnnL4CAy6Pwqm3JgI94mTqbew6/BmvEuCqrpjqVoweLHSuu2pxQh2liAIt5K7iHNym6m1/kvgFXh18HKxa6kOnBUaiRQuGPJuc3FfhMDuDeHWnBgcXamEsHWpwXINqYqBJxZv3BEwC6lqbMHAwJ6u6Chirdpa3F4wHjHAaZJAPQ4TYbYmNdpLjlMaVqhAgeupc3KwhF2weX4KQmAcaIRt0KlKL4y/qeJSjdAUaQ7cXOy7MYSw1mBUKLupOdD/ku+pajDnqRZ6U6mHqc0gS4IaMQyEsNjuWr0GPrBz7HrK1BYYXvMawuAcaWTIsAHsEAHcZwgTqbtMBpy8BPBpy+ErAk0wGBzQab+KlGmAaROpalAAaeOp1zLKYBTQumlk0CNM7YyCaWBptl5viFrsVmlB4oJA2hzHnK+iIerQ/CMwQzHP6nhqdGlrCCl2ON6eaeL+4mncARPqrmkBRKPiDmlTfkQg0l5S4J2cdfC6sTnqFmkxaVbSbSKDqaRpM6kf2KOp+1iBMAup0VqwaeFp2ywz6hBpuAGHseUYaRoMhOZysWnZafFpXOwxfGlpwiAZaUJpF17JabQEGtJDjD4gGRq8ac8s1KDRaSxpp+o+SHVYIWnL4mFpCWkg3uppyf4UhMVpTal9aZexM+qCYCzKmWno3qJpngSpaUlpUwQpaV2pKVrSSIQBdmnkOBtpPGl4setpTuSHqUtpoVi3sLAIDFyi1NQaWjKv8B02pBoFaanwdlrnaT56l2kKaTeMj2l0CCfwO/DIGjZpu2nNaUUgXWmBMGtp7Sx/af1phAS9aXdpNrwxGMCarmkBaQIEqI4GaWepzWnDYN6c9QhQsV1YfUiFcg+pATho6WtyAOnruCtpTWn6GNR6UOlHqVb+NjitacUIS2nICDxiJAiqaa3JuEDg8GtyWWmQBMpppmneOEFpflgV5IeIVynSySxR9QF5IXDKoNGKaYKE0PwY0a2pGizynIsSQGkDurBAmhLGoPzQHGQnaRLpgukeBAT8FEFmaRimiPyq6Wcy1pyU/NpoqrGAXl1p2mjuaWKwoOmlEj5pxunM6U48nGn8MAbpRbAD4trpikrjOoZe6umaEpo4NGk0+irpGlRz5M2oNoSVErLpkPxNdizKIulq6ekaxspOPCjpT4ZgVJf094lVImTpZjzKQr8yRWAO6QxplyJfaZJKr6kp6X9poAzdiVUiien82Ox8M+p9nHrKnPLo3kyaiulq6QyET2mN0pLpeeYRhKsSbQDlsCo2Ttj56eoEB9gK6cHSQGnFLLVp3QF+6clYTuRRysHSWWl3ACRAUVjN6Qg4sel9FCWxmFiIBPTpaek0ibQ4uemm6crStDjj6YbpxUizsMSamhKyOA9pfekuSprpePxoaf+KmCLEYu7pNz7GvHlIQ4xo6WkS0PDvXtweXcruOkvpnYw+6XHp1WkX6bXpkkrlaa3pHulnMEUYU46laWY86nxfHLE8/el5Ot1IirLS6ZUS3+lZyYXpoXAiDGbS8+kz6W4SMXyyMZAOvOmpAFoEagBxCKyE47iTfpfYmBn58NPO6EQD2HgZ//7U1IQZsFF0hBxkwP5EGbskhLB44G/yRBlPmIqBaBkTaAwZMeKEsJiCXfLUGV2G0ixI/i44CeA54hZ6Cdhp+reS1+Iabsx2l9imMCAIhq6a/l3YH/E7/lOy9BmUyO5s2AFa+Fw4khmn/oOyEP732PWatoQq+rD+9DhEOKgIPBmgCq/YBYiphAwBlgRcGY3iatZJyXCqA+LMGX44ODQD4vEwzP5WGcIBdP58Gc6YziZVrpT+agAepIOEL/Q1kBo4e1Hp4ogcLBkyOKQSxum8GaYZkRkCsOOa9DidqAfQFhmw2l347Ww0AYX+2hnLmE7pGoD98ikAFTAqXnLeJhlKGcwoOFphGS/YxRncAS4ZtcnhnErsw56nxNRYFRmAGhzSScmNGT7i36B5mOQZkPzwjnmYqUp+Ud+GHVgOKXz4MBIx6RkZrBnAEs0Z4ThOGeRi2bAL/mMZOlqWxDApnRm96f6sR9hTGclYXrCT8jKAXpg0/F6uyAoygCBYpBrZLJYZnMhRUWPpoxmNGWAZigEkONXi6+kDGcQ4IhlhVMRu+QFqAGEwYbxrgoP+VDiiOJ2Y0Dh0gXMZyVh0GftYbhlYGAsZxDjEafVUE+53AX4ZkagsGlUZ5NqpGWG8KxwfGffYbXz/GSBwgJk1GXI4PxmAAbIZyhmzsIHUG2o4mY/YGIL1/nkZSuyZWN0ZcJnuoDcZ7bKbGfCZy8k0brSZJ2Av4luu5/4D2D0wUBiobs8ZQxlUGlGwBJl2GVg4pBmeOGsZeTg0sPABfxnuOJ740jhRpD+wIpmSmeUZaxnuOGEZ39g/CqvcpXxQAffYc+Cn2EmyTIFbGd3i8jhymbgZjBkcOKKZUpmamUpUfsnPGRcZvXQrGY4ZxBmfLDaZEhn38dIJ7RmUmeoZbThXGVaZucktGdKZ98lBXJwZGJnHWJOWNASZGdfi/hjjGOEwfxlGBIKZYIZWmd9UexmtGW4Y9RlcOMQZRzhJmUY4/BnkiEt+eARAmdFQrJn8mXc4ZYB7GfmZXOnmjtYBalCQmY6QbBmkrFcZlZl0hGzEqIEVgCbAA+Ky2P3YtZnkYsxQwQFhgE2ZXRlKmcbJ3Zko/C2ZZcl0SuMZYtjZmRVSepmVcSSZprCn2ECcd9gOyYHUDryzmXmY0VC4mZOZzxnfVBI4ttjZmS7kYVSVWP3YiHxpGRyAvZkVgBqAkDhcGCSZHzBsGcUs4ZmqWJeZKDiY2AZ2jZlGmQg4qZrmycOZtxwgmcbJ5NQOBK946pnzmRAJ6N6k6JyBYYBOsG5UggRpmR3J/ZlyGjeZfZnPmXiZhwINmDuZOhpAWUOYG5kcOCeAf5nvVDvJ0VjYmVhZtOmDmYhZXq5aOC/WBJlIWRw4o5lsWI3IeWxm/A1YlFm8EtY4q2gjAWGA52ocmQRZ5piSsMMZYyC/GXeZ3jgYWWKZPFnJWChZt5mpsDyZIdigWPkEdvDIGTLJNakHSrypvtDBmDS6VFJW6CN4Krr+KFsxNWAalKPhm4rKWYc4/G7aWZNo2ziyaW84CWjxSBQOK+rAwsLoph44gc84llm6WQNcB5J8wgpZcDig6nL6wGlpbIYxFngIacoQJR6taLC4T/6suP5oJlIVogFZsmj/OMBp4YrU6kGImtARONZSCA4rHi6wzlm86CzQ1ULweg5ZC4xOWY/IwzHreGawUuAWWc0A4XjW0Gxhc0KQ2H1Cjho+WfJZaumibJxxulkTejZZkoA1WUCg5/rJWc5pW2yeMR8pN+ShYcVZupgown1QxlkNaL6gEmmtWQzqFXhnMpCgTVlOeJFptihZWSIQjdC0FD5ZPdD4UmfY+lmOWcfpZ7C2WQ6Yz157OIlCFVmQ/Gi4onHZWRASclRJWdz6NN6IYLFZXuhiSMVei5L+6HseglLfyBJSoVmIUrBsLHEt4BDp11lSSK8k6BL8bGmptiDcUkhsaLgyBkJYEFJEKHmx7Vk3aRFZVugFWTsZELY66AdZOVr8iqDZKllP2k2KgNmCUFDCsKjk6tvYqZgelONZteDZmDjZ4zFdjruYGNnU6gNZX1lTWVXoxWgABm0oaVmlIE9Zrjj46nTZWDhVWdTqU9jBGCDZVugzWRcsyig/WVncgBk82WqxPVBx2rQ4IVmmWdDZENmTaLSI91mVsUjZ8NkOWTtZtsko2ZZZUtn4gJcxJ4CdQQTZ1OoKJNuMjVmE2WGIgBncKOTqXNmiGJlZlNkTWToaHijfMSNZ2ASyKLypJVmpmKPIvNlQ2RyZLNk6WSU4tQL7WbLZ2NjyinWKzVn0BBTZqNlY2awEhtnC6hoebEzWijdZmMIn8HVZj1neOK5oGbwrWd44IdnrWVF87qC02WTZAgQTQvLZcNnW/O5ZDOqmHtBaXjquMcuYdhiPkG/GJnAl2RaU5NgcUm7Zz2R7WdCxOdmv8btCcNkDlCFZ6VlrOGtsRaliGDv6bAkthlbo+tkDMG2MPtkp2ZBUmKwPMQrZOAoWbB5ZXtm5/HnZtdnvnG3ZJ1k86kcodtlE2ZwYgFwyUpHZZ1LNSgDZVujW2TdqRdnlaAAG6QIPMaJIPoZhAraxa9mCiBfZGrxA2aLqY9mr2vbZ22p6bNixftngiDvZvNkz2QzKD1nt2T1EjSjqWc7ZW4FbWcKxQdn0GAOptNl42T/6ltmRsVfZQDlXOB9Z59lqWfyxNfQxGN/ZjNn72Zspu9lSSGFZclyH2Z5oYYYn2Y/ZctDL+jfZobF82SUCsFiX2drZcFiEOQVCTIidQevoeDnu0O/631lqsQrZngKj+sZo7Dm8TPqKytksOfXZdDnq2UmK0Dmg2dQ5Cylp2d8xA9niiOYC+1nG2XoC/9nIOWzZg4EM2bDZ1tk0RALZqNkz2d7I81kt2VhYnDkNaIA5GURHWYGxYNn0GIPW6lmQOWwyAjl72boeqjijXPA5ouYxHmxSCjlkOWI5FFihKC5ZQjmZ3DDZjmjMOXhBEtmJ2cpY/OIyBtw5fPhMOa5ZrVTguPix9Dl0WJQ5t9m2wMLZ4Dg12ZxITjl6Av0UjrFU2XJYcTlkOZY5FFgP2SA5yh5mOS/ZoNmGOdDIWDm25htZL0SrigY5hTnG3D84JjmGOeXsm9n1WVJS3lkscTPZ5eo/2WjZnjKD2PCxoDn+Ul9CGXBh2QM56lnwEC0ivTnHWRg5RVksCIE5Izl7MY3Z39oiBpzZMJ5uiGtZauYwno9y+jkj2ZqItzhUqdw5izlUqb/Zb1JbOS05zG7gEa6h/EEZEK7xnRiP1BDAOgj0GDc5cQSGtGvpgziYuLLwimiZ2X/GzTgj9CmUyYEvnE3qc+lkdiFxUbrfWFFi8DlPcG6AWQlkIu85zWlW2P/GN3By0hl08Lmw8Pc5zJTsVnOYKLmAuarKJ0p3OVi5XxlPOZa8lBhXosk5wSRr8Ec4wTkS8A48sAlNEFTwwJhwGWS4wvjYMvwYsF5KWYsO+Pwz8hloznG3yNDknLn4ss85c2Q+oKy5T3AfOdMJwDmy8JC5iNQS2U9w9znkuVg50rl4ufU54rkplPi5yjS7RGTIxwnpjN18YMqWOKtBpB5gykk2b05nQTq41rikKKtBWrmNfrCExMlMvDPxurjPQVSW54oyuBV+Os5WuUu8jrliuKQ4BkymuKa5LrlYAm65hEj2udq45rmW8VgxD0E2IXj6IPHvogJgRz49zDHQZWzh5r2cEYlRufIUrGARidLEr8RrppZQOvzxJKBw/25nBhR4SoAxuYlQZk5ZFFd4+HDUUPA+Cbm6UGm57ObtoFxistSiDgZgPUlbDIrmE2AW0EyIOD4OHPduolTGcPgO6u72VENIOkiS0HCM68EBCaB4/HBsvgd4pGKVaBFwKbm6UEm5OcEZuXpQWz7ssqNuczrB5oPMwVDjuavmL4CFqEpQAj60SEJyCtD6YENIQEiHuZZQOmg9uRBIoe4ZFMkhcpw+7oVgyEhQsqNuV2AqFBBi86LVuQhw7tBTuRJY18EScVm487ltPj3QQW6zlOfBQHm68MnuNsSi5oW5P4Jiviu5sO4AeXPBqGb2UA3ejtBBcurQCyF/uTrQW7k25pyIZblLYPkhRohhbvh56H4XIUR5cbl1SG9WCVDluThwjThIeB+5g0kRcU0GPAmX7HUUhJKEeG4QHEAzueduqbjHGpRwYB491FIJggzo7gJ5znDh4GFufoIlDi4q9IQOgsHmMGhshIC0tQ6VeNm4yFoQJBLCGW4n8GYJhEhyeVkI1gnicFJ5VIBLweJwkcjJ5PvBlHDCeUdqonnb7uqJyOqUPjfgPu6SlKZ5SZQ17qxao8HP+CuiLIKCedNw2nkWeaEU9e4piZrqgwn5Wd55neAMjAgO7agF8PEwQQ5mIEFu1bDitLQOzEwF8NLS8g5ueYB4UOqBebJo3HlmOIYJUkiZea1hoJA2DO55KKSceUlwCXkSeUlwskypuAzAtnmnKPlsInm+ed55S575WTlue0JhKOVwRu5ruDPUnnkNbpEIlXlCtCJIXCAzuLC2tnl6MFm4HnnDeeF5BnkTuZfCEYk6eRg+BW49eSGwzrQaubSOaRrseOJShBZB4Gt5+y73ScRh8Bareew8TzQJpsogbVCojrcJLDD3CY6A8yxbedMu5/gBMqpih3k7eahR8BZXeQd57laqjvt5jWxveTTJpZmHztJkkeZg+F2QsJi8tMh6APl4WOV4QChBtGwOKbLIKKD5G1kLghD5+amVrBDBPLR4WIGQb+aQ+cj4wfBfNIj5fbK85nIMuwaxwLHmbzTqWGhKKQnY+QhQ8lJwzOj590S+DvhKyPnnNGMQ1EqMYqYMFPl3TPC0FqDfNCT56PgJEBz5axQmUrj5PJA3NEvswYiYbqbB4bToQNRu0h4eDID5FsxzNJGQGPnySivBXEA4+TrM0sFwtAT5prJq+XIM+mAgzGpIX+zK+b5oDyT8SP95bMQLDg94RPlC+Wb5ZhyIkI80KjyyrMIcqZDfNHcGcPhi+S3c8A7LtP3OhzR3UNJKTIh4+TT56qTG+T60/vkmJHr5vpDnNN75l97mdPnmDPnV6iYktTBX4DH5pnwBwG+Mv8Gw+cJKwPlv9JcQ2sLIEkCQ4vkZpN1o/AQo+Z0O8flL9OH8rcK6mLvBCvkzidUeRAwsWMX5FEi1kGn5XkoetLn549y/Dj9EF+Zg+NEYjMyOCY75LxjgOvyYup4mQMH5iSod+ZCQ4flKWGWJLfldwJz57vmzSM7mTvlYUlKYNfkG+S2Q7hTsmJgcvgxl+QJJSiDf8Hn5PEkr+ZIMyFiaSVEJzAznko5Jp/lv9Gv5S5CkiJX58lBaUl4008Fe+RJY93jIHAj4I/mGSdH5H/mmSTTO4fkv+Zu4eRSp+ff5AknT+av5zvmxNKXB2vnEDkw0ocHhtMf5PElWtN/0+qCf+SXmVfk8SZv5Ywzb+Sh4xDCoIWgFR8YwIYc0jPnBwWFJBAVN+Z/GyrT1eG358CauHBQMpmzEOscEK8EsIFQFMZA4BeLwZAXIpO80tAWVaKLI8QSIBQa07bnqpHaeC/kFuXD5vAW/+cAF5AUZ+c/5lPmTBM4hifk5pEUiHgxEBYkqGFR4wX/5MgX45JRsxPnu+ZoFPsBV+QHAzioozvIFdnJH4uP5I/kGBQ+IkQjsBb6kwEhWBbwUqw42BQzO+/m+pFIFeAXQUp35IgVnOUNJ1ak2UKwoWni/TJ0OGiSd+QEF7BSq1lHA1NyBBTw6UcAhBUEkbSDF9gdAT/bp+Q8hsCCJBV5KAyDRBakFM4mm4D54NrTt+WNJjflkpPQFH3Jq0CkFP8ATeMUFD/RpZLT5x3YFBYiiaQVOBUxUc/lRBSHAa557JHEFxXitBQIky1i2zikFgpg9+XrgHQUNOg24i4mbwSkF27YCSUYoF4AxBSJJaxBWBbkFDbgnfFnmvQXfmOhJ+QVBeC0eA/lWIAv5jgj6OuyY2QU/eIueXkr/KGxgEQXakFsFjfmnBUEk4Qk3eNMFY8YNBZkFtkkdISkF9lZ7uOyQRgUwzDIFJljdBM8Fk/lVBGiQcwV9UXSkcGJLBed8/PnxBPsFf8CJ5NAFjiaoBRBQFA5/BR7mCQWAJNPG48EJBeMFMwUgqJCFDwX4SSBaDEDc4Bmk1wWvgHCFdLg+BWLU7Kx1iu4gC/xmXHOYY8F+GISkQjLOJF9qQeCFMnHEXAL0MpMyJhiOosNonDKkMgzKvTII8XoCZCAsMqyFi5jyXOTolIVJAsR0loAvwJ+B4HTC6LZsGWKg3BP6P2wt/IW8wujdPBv6ZwJ7aEe4aZgydDkxHBjAVGrgpbEhxI9q3YqnoOtERxgcMnugfhgFikoy1oW+AobgdULmhRWK5yDpsZKsmhjyyhLoEoU9ROlAlzEihRRYQoW5Mg/EIli4wBpozoV0WI6Fu2ruhfVSh8DpsYAkzVKxhSZZxcCf/BoxhTI1xPhYoYWy6HbwwRglypVCUqBjip6FlzGclJNSzIXBQsGFtFIUheWFDyJ2xByFV0S9YOKxujILxi5ZVLlkREaFHlnNlB9EUuA5MeAkmwwgwJWx6YVI8nqF0Ojd+NLhwuiCmPoYcKDosTVYYIy9IGmpoKBOiotQllnFioX6yoV8CT05fYVcOeWF99yNtJNoXPjBxHaFa4V2UteAfoW+MlfoiTE6IPKMZ4Xn+tOFo+joSkjqRLqrOdyMw4XFMmKFwugDhRCIEzK9SDqFK4WHatmFPyJdhZEyi5D6iJUgc4XdIuiis4VsOdOc5RiLhdKFpDI/hcHo2l4KUp+F3oViUq+FtYXpMoGFMgaIRWg8eYLpQsksdlKZhfKFFfhkxHPOHUIMeqs5uEWARcvR+4V5hX+FqEU7hV+F4MCOiNSFdYqnHHB0AOBThYeF5aCDwH6FXPj6xEcx/oVgKHXOllnu+OtmeYXRhXqRx4Wy6PGFZowxIJcx3jyj1GJFQYUDhfWiKsTihVuFEiRehVWFljwMRQRq2WqnoBwyKEUJiNRcu2oyhd0oakUdQri6hDSURd5IuLoAoCKUWrH2hQjE7iACRadEYihahSQyGfgeRU5Faaj3NHfk3kjkRcOgcqTN2fZW0nHeoL6FsuiCReOcn4U+RffgAUBiMjfERGb1hdtZGeyrtO9AVoUXhcpmsWCkkv5efmbZRaxFYEVFjmhFFOjERd5wNYU8hYlcPqAtaNhF0UXmaChFqIJDhZ5FSzogRWqxNUWugOSFeEVvuDmgFkV06KVFOaAG+HQ5oUUeTgGg49nl1HPo53T0sfOFjmZ4IHJZqUV7OhBFITlcRQ1Fq4Uiha+OR1yLRSpFQswJ2blFIyjSEaNF44UDEUDM5LE3hXdcfeRafFNFPHR7RdE5EkUNqD1FnMLu+A1MoEVRReD8qTJRRfSFCUXu+NvkAkW+MonkGUUyRZJRukVP9qPoX0VSMgdFtujxRfM5YZR5RRuFvjnQJOKCLUUbRW34aWSTRemgTfhXRXQ5xYWsEEdF50WFRXuOAqAavPzsQvFWoKvaPF5o8WrMCdk1RY9FrUUaRYT8dUU0xe9Fnug1RSDFgzJIXtjcxUWExWjc7MW4xTgQ5UVbMMvRDMXEsXRFwhCpMumFY6brRZZZXPhKhYdqb0XFUDLZ7viKrGaFc0VLBBDF0rGBMoPovMVjRSModUpHMUNFSeDuokIyZSCJUU2FozKsxfBoMMV4RRr4UsUIRfTFC0XpQjLFQFzqRWZFx6gDRZ1FYvhwFMdFUEV9jnCYjrGkIIVREgKORZrFtGj4xarF8ozD5MixbEVYxDCkKMWJRdjcCMUSxRb464ZxyJzCvjLcyj7FS0WHPC7Fu4WF0RFF8cXzSjFF6cWAoJO28rE3RUdK27Q+MiPRKsXdheXChcVShYxFCZwrxJto9UWlxdVF2kUtBF50b4UVxAAxBUV0RRSg5sXoRQ2c7cX9xaTsg8W0hfIsfcWjxc6hCV6iaLEQTE6R6Fdo1nH6NHPFSuhX6FPG1DRuMobqdtjHkQxFbmjANDrWdULfUofGvzwT+gfFi8X8bJ68O8WENE3OG8XlxkoopEVX3qXcTxEBYA4xC8W8APZFhcTnxX1sp8X4CRzoL8WPxSCY+8U34G40pwlpqS8AI2z71P50f7AbwPE0HVjLxfZ+cjwwJaDoK8Xd1AvyjrFgJDfF7jTbxRtsojTshRhwZ9yPxUh2ZnE4hIfFRoi8MhfFXM5AIt/om8W++HfF3+gPxdQlz8WLkqS69Ak0hUIUcwS++OVF58Rtxk40jUV9EvPU/ihkfLwlL9SxjNFCnCWw6ARqWrGsJbnoOhzzxYwl2KEIYWz4J/hg8IXyQNaM8DiObMlbSXSoz/j/+LU28FEKJTrxFnbfeQ9JnL6X+Ec0T05WQsHemMljLhd5H05mYqoljMnlEH/4c7w90D65+aLqoFZCTmj2JQfoWiVOJXLQoblWAU9BiAR+aOJYScJL5uTafiEWzAgKhBlvPkPeh1CcBGCG4SUNwoaYsLoyWEDBUpg8+UnJJihuSkbwzwaXKCOJ9xqHmIZ5/Ji8weK8Q+nazGlIZfjeBubBZTT5Jbra+8FlNG3G8SWSGA7M97HpyavY5Iz8mBLOeLoGmGjScfnVzIUOLfr3wVuJHRp3mBPIzfnsJJypN+Z7JO4wpxBhOmvmT7iWiPM6vZhNwKuJsebJBrklUpidJbLaYgITibRE6cmZJewUiN78+t0l/sGmSfUaJZipJeyYx+C1yW0l7EncuefJC4xB3hW+TcmIBN+475qeMMElZwVwTicOKSXhuJzW7UBbJZ+OTDRnJUslzLRBSbsaL9g3JSYk5hSzaB8lUUlSqRU6pChFuMQwQSWdjA7MMDQVJZCliSrrOEcGmKXIpJElLKmuWK8FnaF6erra2MHkBdLBStrH5nClRM6NJT0lKgUlvk3JmKUWBRDBLKlUpf4qJoE2+g8l2sL45MNo+ZhgwajkQSX7JaFyxSXnJaJysan7KUKl7KWdJTGYTKUuBXMcifqOIfzxOKXFOA244qVB+i0JWiQzhOcGESjNctKlCqXhuGqlMqW8AjwFAsi8pbiljzhK+ZSlFyWmpbToLfp1JY++CKVNJXu41eB/HEbaJyVFOOgmtKXupXo2rSVOpfd4P2QmwASlZKUtKviloqXsFG/Mfvp0pU7ErM6NmBJ+SbiepTUGOL7xpTUlPpizIcsk2Lja+Kml7qUDzLalenDtJUJBHsmDaje+AfgxpS8lyaWbRLClhyrwpSwZkqVJuCylh5hgwQWlafr8SHPEu8xZ2gDAT7htpaX6uQk2kE2lpfqjJVWl9aW62oMlEbjgpW6l+aU6geHJ5qUlpcqlhKWR+ZVErviVpYAWimyNJWylAcALpdPJJ6yfeOREvqVi5tVJO6UZJdslwHjpJaX6a6UHcJalYaVb9I/gzaXrJfPE9QaFJd5G08mlJU+4j6XikJUlK97pzP7aA6XtxILQafqopfbBF6W02u6l/DCZpdOlhrQVpf+l6d7ZJe8liKXH9DGlGSFLkCBERwbPpSDMf4TvOvmYhSXgZcU6ZaUHcFclayVspSR4gGWVpenB16Ux2gRlCeYrpQ2lTt5JJbDaXKWA8OTx1wYJJenB/c5rJZ+OqQ7nBrWl9ehbJeRlsnBAInylwCTjziUlpgJf3oJlIyXBpTEOfGWQZUPm3hHjpcC+oc4QpZ2hwL4sZSMlgyX5DvtwLfriZWplAHDeBmChNg7MbOK8L5jOGCWZj0Gkni+S6xz8qoqlWKkGqlAhZmUtaJIhR4hvwtiKjMHofm2+TmXFwRal/ATk6PnBKHgyyLmKmiHlJGYkroqOIWEBdmXOZSbMjOghimwhDmXh/FNCXsGbuHSS3IVxZUm4vkAPplFldaWupUuK4mXzOJ5ltny6ZdllTmXt8iDMvmUSZjP6pyopZVuKwCEFJPr50GbuZR84nASziv5lEWWevJLBrlLmZdSSzLRSWTzpRVBBPugOPjrHAdc6zakOtFnUVfAofB2p/5DDZSkBuBAthF8wa37vLkZAxETePGnhykKnqdMkxFAjqU742TCrZccByfA7qT+Ai2XSumJ4y6lsLj8YB2Xreg6EUjq1/jtlJJpMVOSYZeE9ZQMOVzyyCOe8KWUbhFpIT2Un3jGEUTo3qSP8z6kAfuiwtf4F1M0O2YyBUKbQr7xdkJREAyCo/uFuhbYLZSGC7/6Gtg0sE2UcossQm2V9ZUwZUWA9DrR8joJyonPsfh4XhVtOOOWwdnEOpjqT/oau7Iiw2FCFdjzI5dhpN0gMsPGEKm7g5Y4e6VjYsNzELeyEpLpqQIEx4OL+4PzMUJKBbQBeaaCF0P4ruMWglYSv/jSBh2XIBIueP35kqBtlr2W6VvIZVjiQaTgOQ7AG/ir6qpAxhI9l/4af3pOEb2UbYfSwL6DrLDNlZzIDZZoe+OXeGVPeGmmSLnDlKNEw5Yjla2UUAQjl42XEUOuiuOUU5WjlseI5cCZpQ2X25cmQgfgDDkblKPyjfJblZSx5sLJaE+r7Hl7EFPTF6QLl+YWz8CoBtuVAyLrlH9jsfK5pa55w9PX01Yiw2ILlTulUyLNpPOVVATf0XuVsyIronZhQuv3pTuVhWstlGWlY5ZKynuVFhNTcOxC3XhjlUQ4k5RlecXz86cXlvOW3Xq7ly4QQyOviovgZaTdlyvRl5XOEiKLyAeHg6uVy5ePlAAx55WLlSRhqxAblveXPDN5YQeUpMPnlFyyr5W7lDjyO9Avl8ml7ZcmwkrK55fisDTq/6q16wR4B5X/iuBB2CFtlsViROHQIN+XJWHflD2W65WSyT+XTZRNlVBhO+H0soeUm2W/lPR4+arwazeXTZT/lBDiLev7lH+Vj4MyIAw7lOkpUXLhWiM/l8uVyGn7lxEQB5WSyR+UDDvqUeywDfHvlQ+XYWSnlEeWa5V1YHhBT5VHJvt67ZbgVtOme3hIE2eUcOFQVhA7u5Xk4nj6j5YQVmWL6oHUeY+Uk6Qt8espkpGtljy6T5aUeJ2VaGCF69BX7Zb10YwIt5RflrBWuaQ/lxmVhuVAR0mx75bUwPuXtuUhpEzDO5SJpZ2V4CEjl49yM5WUww2Xr4cIVWhXKFfaiqJqtEA3wcIi6FWoV5hVxuZcaGsB8WiD8KOWv8AyC957NuUgOIUgJakHii3pg6dSCgWmy5bmSy+V9UMm6ogj/ZbHqmhUCCCXlweomFaIIERXNjCxgNOU8SLwV9mj8FXpyzuU0YlzlVGlmFTpa6RWv8JkV+1654I5pfBCyXEgwyBWJMPyIV1mOYGJpYgI1iD4FROCDYI9w/OzXeGHodRW0NDfyexr6yJkEiwUmUZLUujTU4AMR6shLtO/AKYg96GAylyU6CmHoYxDNOATipwSD6LKhr5yONLUVQGhSmEYorxAPBHxxfZBlNFDAd9SljJWy8UIr1CrIv3AEapw0CxWZBDVYLDTHFfUVvRVdSh0AvFxH8udK0whLFTzAkxFw6DOxUODGNETgxnH4shkkSDTnFeWCnP7H1HOSZuKw/p2OzRU2dLcVRxEsAOc5kXHkfhcR+PDGLpzidvldnK8WpzjFcPjadQR/FgcVwsSU7M5oZ3FlNPLWBOxIlbxcOJDy2jk8EMgYlci473GqJIGWaSXohqTsfsgynmklB/woYACYsC4RfIyVpOypiE4wFPg0lZxosrYM4nkg7tqcaOC4yrILSPzadOziyEyeuJUFOATsS+oSlbMcCw6vSEKVfJUuMIo6JwQrccv5CJXVnFTiCob8mKKgP9HYlbKVrLDYLJyGG2b5NKN8g+AbPP4wl3xoMqDahuxDsPDMUpgFOCpAy3l0qHxkXX6Y8piE2dDYhEqQLiUJglAxgVzelUHGBW7+lSeWj3mUUQJErpVelSGVJOZ+laiEAZVSyRolR/gxlVuJUZW6JUmVBHSGuYN+HZ7cYh0IxERxLm9hP+Cgjq5A7gyGygVAGp7U+CUMvFBF4MEeeZWOyqWVAcq3QImwTaTyCCbKeZVw4UlQTATllc7upvAUskdAREbndPPwJsrY0M4m/ZW3MuySEHiECN2VJJoApF4MelDtlajlaHiyCE2VgzzHkAuVywh1lcREFyAHErfgzQ4vJO9gcgjV6t7Kv6C24IQIiUCjlajgScCOysk24v7rho2VUqCTnECS7gxJunOVLZWPlRQSOggmyvggWYQWDgEwbEAYDLeVGbZuEIOVJ2LLCHnAzAgmylUgQl6stBvgJsoh0Pz+NLRnlYyGXbBS9GU85sgRYoMIolDXlXxcjdDs9Pj8JsploO2EkfQoVdOVuu6nlcgEoNwf9OnKOZUrlSFiWYTllpjlL+Bw0Nb+dCB3ggHMNFUu4UgQlESrldb++0D1fGLIr5W0fIpog5V/lZG6atYpMDeVZQEYVV+EnZXu4RxVL5VT9NNQ35Ww2NJV3akAVfXlzZAVlQISdRW5la+VjqIU/LmVgS4jqfpQfljD5Lf0fQGSVcREdND5/upVP7DERKuVhlUTFRuVQOLrZXpVnUDjlYn+WlV04gjsClXjYEpVWFW38OO41JB2CMpVjGkIoBlp4lV+bopVH5VlDNK6oFWWCAISmWDL/ixgXMp+VWnhqlVu5XDQEAHsIIlBvsivEFIZHXSKQqxVFFXYkMZxtlVsVZyGHlU/gJuVGhk8VablGVXsGaJVvlXwLpKBgsBuPANAwFXAaQWVyVXm0LKBDeAiyg2VT/4yUOAIwVXBboFVclVy6SjwSNgPlRWVRQQbYPOVIWKyacpQ9+XqVTlZm0Btgq5ABlVUorNVxEQmIAYIFLBJVfpVsSCbVZNVRZXTVRNVS1U7VUpsULAVVeRVEmmJCKOC+1rFlTKwvVWo5XVVMrCdVRuVuVXsAVJghYKFVRJpN4COPL9V3AGTlcEeVVW1sOgIeFVuVRBk4NVTVVaYZAyjVdRVH/TRWkZVxOVcVVUig1XVlY+VaNUlVUyui9Qf2KDAGdjjQJ+VlyLvVTDVEBLI1WNVk8V8QZnuqW4qZo985pIVlfekDlW+kvJVnEL6YHqeYSkLhI1YcdiKmPJVfJxN8FIBEnGNqU0wa1U81Y2pXNVE7BzV3alf7ATViEyHVawK91V2MKZVVdGCVYAc1gxN/iTVOTBsVfLVxBw4iFLVhjCKcvjIe5V4kmzVDTDsKafQfNUi1RVwMAwCJujVeBxsVby42NXQIo9VY5gwkDAcICQHZYsMUgh5FOrg/G4a1d7VAEJkmHdQdfCvldl0OvyDcpLV7BmRVREwn1Xz4VWVKWkx1T66BQ5E7LrVtBm21aceblWh1TLV02qubJnVBtWBKYaBqhAsVbs4M8qJ1SbV+wpERuxs8NVO1adVwtWdCIYUp1XhePhCaIYV1RqJ9pVohmUMnWVwiR8ieMDIBC3cpERsMgW6yASfRNgJmwxqul+yzXim/HSIF0DDMH3VyuD+ORxEMXj91fPVz4QsWFb8U9UL1e+YOFQCMsoQG9UTjicQetxOQD0Oplyj+svVcspOeOoa69XPhJl49AmbDF3QuEQhZVL8YqjfJa0u/qyqojvVz4Rzkj+E4yLT1ZxV9vhwWJ5suETzdvRaVGTZsLUaMsjChmxEGxKU/ubI4NpsUkKwwZmr0tLAOvJ8ZFoZiDVL1Y+EFOBiVet4RijuOakAfVW2QAlceEE0sENVFnjANd7IC9VV0dgJp9WURGGIb4RYWMQ1wR5T2BfVN0FeCrmVyVbqBCw1xQE6Iug1AMhjERsOsDXUNTkO4xjpdOQ1zESW3HtcRDV8NdLwVaCR3FZgrDW7cJBgkERWJBgKLYRMNd9Y7Gy78qo1r9VFOeSYzQ4sUpWk39UUNaCp+cCX1S0sajV7/LQUC9VwjMJUhjViNT8pFMCj1T/VuP5W2oI1mnwuNRlEeDUDDvrcIjUGjJPyFqGhCGxSStBl/tpURFTXZKI1HIR4Ur5aWFhONTsG7jW8NXv+0sRUNWNB8jUoBHdYjER5ICo1Cb7nWIuUXFipEQ0wfoiyNbt6o34FNULyOxBv8ra+2TVfcnfVJAhNQBI1T9W4RIk17+qmNXNyuYj6iGPVep7eNfqIjbrVYCN4ODV13IIOX35INaU1ZYC7fsY1goj2bJsVkP4gcFbyuTX98mh80zXb1c8MrAFjNe45TrA5hCBgyDXilHv++dQBNa41aIbCNeoEljXPhL9UX9XNNSIEgNp5CUc1ROydNXs1wdT4IJncjxBtAYhMuzUYNRPI4Wn2NeM1pSCaNc4wFzWyFf4lpJ70qAr+1+UZCe/q+TzOaNQOILWzkcbOZ34lKm/xdCgT1g0sUdh0KEC1C2Xg2nqR3TxzNTDqVhrdKAi1yQ7y/HQoXwHBHr01XZE8wOwERC41VA/IvkCYtTRu8JgJiFS1eh6rtpwoqYFzNejxWETmRYL+0vBotZ3VNyl23GWQZi4R4CRSUrD7RAK1FFIMBJouawqlUknQYc4itRmFiGrc1MwGbFIQsCKC6+CdhUK1gNSiUH9E4bIMxAvUE4UQ4rjEoZQmGBjAw0Q6tVERarW83NIGGtyMknWQRwwXru8QK/yGtCnCBrV1hXFwTZAOvFq1btS+NNgsjg7uwoPU1TLVJOxwvrVu5khoCdQytUEyrhKwvHTEudwUxAZ5XgWMedwJ0JWHVFwQFMSNyLR+VGQJfgRwiXF63PreBHAzoXrckOE5tZZ+hDKehnZUe0A68jDcd0hSVMmhL0TuPqZU5XHG3G6+zwpCha+oL0QNtaZUTXFFOTwgkd62UNp+etzDIbyQXrDoLkW1XdB2VKxAOC6EMvm1BaKFtXc5e7qTta/OabWfoT8qfaEa3ApK/bWtyqPVeMydPu6Ic7XGvI8QUD4zoY41TKoKVFO1u7GjCr1g27UE9kIi2rCDtRtMxZLVtMBI9VQ7tfQ+svRKLjxo1d6GFG7K2ERuviO1c3GaiJgcLFRntSE44bLgfNW036HeUtm1CaI/tVyiBMGrtR+1KIiK2iJUACBOLnB1Q7LVtEXKUHWvsjtG7bXYRCx+gHDHtcwgvQr3ZuMAzpU6TJPAvMR5IMJGkXDQUJoKPpW7ApR1OU5cxLgW1HWhlTbx4VJ0dXxOFHW4FlS4NHU6TIZQwFD0QAx1fHWWJVsu1ylCHn8O/FBMHjp4Rw6u0lrEknUp5hiyMnV+eBf0WTo9eZDYJnIAOhGJeL4TeB9aSHjFaA7M2nWqbG+M03LHiCbSBNDsyEXmynWXibp+ueav/vOi7tDUZVQgo26QdveISna7uU51x/S80sqJHJgkeOYgzm7xSHPEQvASyKZ1lTG4ZdYCVFCGddXmdJAZbrp19sFfMLXwQWFHOt51t3IuUKp1jMyUmFxu/Ei3xFn2ge4LjL4hkXXFYLnQCmE2DqqIb4ledVfeoXWoieHBwIgRSRbIlhSaIOp5VnW1deV1y9BOPkEFmElI+L3m0iC2dbJ1gHk8OoVJp0wseKrSMnXtdWwM+tKHxG5gImSUcCZ1Ckj9IXW0ZbnmWDe+yjIg7ATQ8Xi/uUwgmInddf15nXX6bKJIoHk2det1uxZ5Do9ghW52dXPBslBPid11JUiDdc11AubC7ClJpXWLdV11RDJSvtpeG+6KMjRIpCD/bvyM2BHfQtJ113V1SA51sO45dRpwiwVRuED1lNWnEYleCbUseemUUCT/hGfOdRRa1MLQq9hMfvRwMsKexKA1hC51FLv86PUuwJj1asTDtej1yPTAJF6EwlAVqsmhggzpwuj1RpiqeVTI4HnbeMJ8hS5JDLu1nsR4NQqCFPU5uhv0PbWCDJkUnsSGahIuPAwE9R/QYV5sDNj1H9DjWHj1qXzvxPbCZC4I9YgUQvVLtZKAVWq89Tli7n5heYiJLKwy9Wgqz8Qa9RL1vTh09XCYSygRcAXIMcR1XkWh03DKJCz1/0ilqPlZNmrBUN4Bi6HeDJbCSPUcsGb1t7Tq9Qb1kWDeDOpqzvXK2Ip+CA7e9ej1LxBWPm71qmztWHehCg6yosj1tQTTcLb1OPWhoeb1QugA0Lj1Dgyo/Nr1FXAo9dNwHwx9xNIin+D9ecqU86J5DB+1SXDYiKHQ31IK9V7oPPVi9fH19ezI5FX1mvXp3FL1mIIRLrJokdTK9UX1KD7u9QBQTi5SSAq1vPWB2MRAsXCt9emArPVSDkg+oHjvGfX1wnyh9YrJ2RDEdbUUAOBUJOoANCQjFtjG3HXz9bhAi/VnTnBISYKr9cx1nwkUFmBgi/WmRkyOh/WEJAAEe/XzSQSOp/WkbAmmK/VpQH4lkBFCwtHi+KEV2J0OaWS4Kbc+n5IWBRm2/eav9dVyP/XGWr7lb/Xo8s90ZAw1Di4FS5YEaCq8yqRY8OdRdf5PXGc4zPHiYQUO2pBVUA7y9vKdDu6i4g4QiOzIZWVZAlmQ9fT0BV2I7cls4SPi+iSo4LwOK6hq1nu4FA2g1N4RO/rluCQNKV7QBa/82w7EjEFSyWWRAj8Qxx4tKgANstEoDQ0qIA2PPgIN0WU9sBNEPA2POBWwhtTh4PCF5SSuWBwkzA1PuMPkeuxhEQwN7ZIqDYhCMgUwpB/1GgETeIBEC8l9qA8IWiSQfJvJOA2/DqDckw4YDeGlovTHUT2ynyo38L5qQA3WDVIN4dT0DYOQ8JBe8p/1ogUeDcjELPK0+ee8Gg01rvVAfzX8QVD1bdR/OCRA2s7/LDaQ8Eyozt4cqaABZVDyXCgKyiGlxym8kaAodWVqKekNS5Bk4nbM9ewb4PFlABpC0fqqIMyKyJENc8KbMfLAZQ0XPobV8CgtKhIaxQ11QFYo9Q3qqTi1bhyZDQjOzWQaQKkNSQ3bsRpA66WZ4GKpEKgZDX+MKg1gYJA4jziWlsMNOQ1dFHPC8ry8DfCac8LsSBmkDCrU7NiRCeDfuKMN01Eg0A5yc/WYJC0473BdJPTwfJiNjpXUxw0X9adJbJjPbK0A+SiE4qjJ1w1nDTT4Fw1gySs4VkLGJWdOrw03DRokGZXAievCpw1dJN48fJgPDQCNdw3qJSZlQsJNvDhYJDiVQA/mEk5QjT0pozAweOtOFlBqAFwyu8DiJshYQECojUeBbT719JiNjADQjQfwrd4x4GcQMkZtNGYOB8VbmGSNTUC2eXxQ/BrUjTCNf94nqB5ghI2iQLdo4I10rOyY59E3BUUyRI1cjcyNr4ALPnyNLk4z+X7KYYjywMlOwBrjALyNJsySjaPAQMwwjbXGtBAZmKUFNI3kBc/RBwXOurvAkwQoLtjA9R6wmrwFH+AtBc+WAMDIpPA6tpgpBRsYYOA6jT3qUwVtQtaNXlCVmNKNabj0ZY0EmIwsIIop7o79pLwQJkCejSDMVYTV6heA/ClbTv6SbU4MQNse1o3WhG6Ueo0iSoIOBnI1EXK01/zY0vSlyxESYL0FqpATJN/R4Y1ajeyldI0mQAqNfI1ujSqNBY3VSadk++pBjXBKXo1ljZxUqo2KjS4Fj8AVjX3W/o1UMfZAcBDq2Zu4M4Qx6naNR5TspRqNf8AljeylRzaijTKN0WV5ja2NOY0tKoXgNY36jUO4KHQqPPZAfo2JKnONE5i1jYiNjzjj0bgMEY0xDXqgjmCCjZr8IY0fOEaNDECLjbwNA068ICeNkw0T6jP5wY30ZfcI+I0pBWiNVaUFIGaYq43VScNKbZjOjS+gRWV0MSHAi40DDcgQeEAVjeSNVaUATUQMbY0TyE7EFSSFqKUFXIgWxAKN3Y1qjaHER40ITXWNgiQ+jTlAA43geOhNjY1fjTX6aE3J1kBNiE2zSiSNXEDyct54WE0ETdKNIXglTo7w2hD7IFRNsHZLkKwxACCETYyNs0rYTVRN7oFDuA4sJIw5QBeNPPBQTRhNI43X5q/At5gPjWCIyMFoELgMN42EwS2NOE0iEIkqNm5OjfxNx1LujY2NZIiyTUONXEABKXwox7haTShNa43HiGeN8k1ejSwMbep2jdZ4LU5MFNvgmo0xWBmOTBS6jXaN4th5PLvmDY0pBU2N7sGiTdBN53wKTd51c+z+BQrg8PgweFogxZgwTRV4JHhtEbXAmE1l3lJN443ATZ/0ovhgTRONN3D+TSwgM43edbJOvCBJjaaNQAzhDFlNsY3WjZCNAU2PuNZ1oE2kTfuN9GUv9PONJk2oZUvRDyyfjb5NCebGTc6NGk3pwUpO9XjRTREOo/R/wEKNFI390R1Norq6TR8+ak0PjTiN6cHKjZUFI42WFBNNHo3CTVJIgk0GTbZ5yI1pTclNbgx5TXaNNHiwmqzq3U12jancOU3bTR+NBx5xjUlwmU12jSVNtA6pTepN8BCaDmSWYk0XjaLmbk33TdA4to0tTddNTA42Tf2N9o3ZDCFN6wUFTd9NzU3ZTULAwXAfTRtNGY1MDo5NYU3ojdnCcU1ETbJoC02vjUq+cI0BTfFNc2gDZANNPY0KPhlOMY0vWBBNc2hYzaxNa41qJuJgr4AtHuFNFDJ0TTDNbE0U6DtO+U0ozYToNk0xjRjNH2ooLtmNOM3aToToLM1nTTiN5CEMzVdNIY3UzZiM542VjcY+VIRsjAuNws30IcsRe40ujUU+JdFsYDpN6I3gSW6U2Y3bGL5OHM3xVHaN9bgyINQhSM35TdRN40gw5Ppgdo36zck+nE5c4ItN8z66zQTNznCOjXUgvU2WzRNNQs1ebLaO7T5DjbNNJs3ccNTONjYVjTm4Fjw8fM+NXGgNTe6Ors1XjStN501KIY7NXM3B4JbNGo0xjVaNFHBmzVkgR00k2iqqA06fTXTN2qRUDJ9Nj42ezeRQAUB8zXkOnY1nAkHNxj4ntCSM5U0eTbnNyI1CzTLNSnCZzT42kM3ocMyEGs0IzbnNXk3aTVNN4nzVzd2NsE1dzbJOn01szUPmov7hDJ9NVVhETjx83c0pBVrN6XBlzaYUms3GiD1Izc3nIPPN29iLzS/gWc12jarNt4BKcMhMLc2dTbvNy83SjcBNO811Tcogjc3ccIBEG8AkzZ3N2JKgTStNdM18oa5UPc1kzdiS7U3YzWDNcHy+KEd8u03ViEDNbKHfzZaNGIgUcMlKKxZnTRJNcHwWIE/Nr038zWb+S+yzTZXN1JKPwFKWJc3GFAfNZ80yTSEN1NW63kVNrSCdzRC5QKxUoHNN+C04WOtA0c193iSNquCPjSRlFC09IHTNeI0vjbGUdY24JetNhIB0zeh0EljVQDfNa4K7jbQtao3ctaJ1Elk3iGOYeGx4pVsRWJjCWKUwvAX18k/gkiYyEJOkkAFQSKDKohASjbcenyToyGMw9KVONd963CDaTtckbzWySKZcjVgdjbwSu+DqLX6gBnInDirGw/4ZpDrUQi3HDMca79RiLUTI9MEWLbio60mZ/sYtDDVarMhYT7g2zuKkp6ZsJaGNgqTcmC/AfaTlCNyk3Jg/wM2NWi3CLdylqG6YmM4to2A5SaGkWJij9A4tmLD1MFYtidA2LTRutxhmLULAlKQ9Ch+Ihi1DnsPUfDVHJDotxi2WLbCUGi0WLWItdJJGLa4tMi0NPJqlJi0mpKU8ui22LdCkJ2BGLRYFWi1PnPr5FcZeCpPcPi0gzO0E/bDa3B4tTqSpEVnB4QwsBXCwaEhPgPD+Zo3q5l/g0UAiLVUEDMDurA6MT7iCLd0tp3APJHstDMFWPCQmWy2gpO2UBpAfMJ6k4FzVbBakjxVl3D0tggWqLcvcjy1QpZnOTcEtLfd41M4pLfmc68YZLd0tJy02kP8tDMEHLS2kuS2owTstzY0jNVMkx4AbLZSkmxWwIXMtQK03ruKkSy2qnC+S5S3rLXEt1S2QrfSloDX7LSj+yaQz9QCt3Tx5KvHU7az2VuylXi36pN9+xi2YNQ3cry0pjQit79w6LfSl0K0mpGAMmyTgrQzBS+yhcv0tPZTr+eMticHo0OitN6wTLZmsgtB9LcMtiqTLLe6klRFCpKMtWKXvLRvc2lRnxsktUawCrWStWi3vJEXGZio6Cj2klK0GcvStskgVVH8tbS1CpODA5UnkrRKkgK11LaqkLJQnJMStWqS4rU0tMq2Srb6kXrC3GFcGRkrhLV6tATzTYBYF+K32pP6tDo1OrTGkCTyhrUGtMaSArZgtkPVrPiKgVJikoO3BPux/Bevy1txmGIPGH1FjcazBWECzeI4mNxDDwTI0Yy3QkMrg2KSz6Awm33bDwQbsYnLHODPBqjREpR2kMp4D3IDs8i0vJpmWza104LukwlIFUKzBeVIABToRCfqswdWtp7AvwCCt5a08ScckvwCswUWtiSpMUAWt2KS5rcskI61OnmesGa0TrUQ495DJrcM6cjRemFOtAsgzyl2tu61ZwTQ0ma2uCA8AJME9YSiFmiCQwRvgki3bQiggI9xUBi/GnlnU8fqkbezTxkSkTa0d/OFgfwWuaDKY+qTwNJmtuyQghG+tOuBjxmmt+qQAQM+tTxjZrYBcN4AsJlmte60YHtfGJa0y8CTBV9TyLcBtSa37rTYGc63ZrZfyjMx4bVOtvIr/eMuthdRFwQzhmkmp4CtxRcGLrQSFFyRJMEKkMEjPrWetJq3DJMSk2qzVmExtIWB9pD8qAyAPLcxtJCZYbQ8tdyh5rahtIm2UbWPGilqfQd7oUm3zrUXBv2ypraWtRcHVrQmtGCgx3H2tY8Z/rQ8tDeLVuDTYrpCkIZY0V61XcO/cSjQTrSBY+JwHpFLsXa0brZ9Bmm1drcoo5G3EZqjsh63ybQRtjN7fSXkU+6RhAT1+MAV3pPI8a/X7DSBeG6QBbftJRzTebaFt8ZUPSX5tJMYqPPjJu0ZixpFthiW7efkkwW2JbXFtU0kXhSFtGW3xlRyNl+y6ML/BHzrkOkoKhW008he8UZI06Mby78zHqj2iXxrVbW2aoEylbb1AlPkVNU1tooJOQOsgdkgi8u1tsJqtbd1tlkC9Bj81WgWdFJ/IZsi9GCNscelljBLA3hiszhiax0r0fApC7sLhsqcmKb7gXlo8DnLmLQm+GzS4xMWoS/m2vnmWbhJTbWM0ebAuyCIMWSbHbW1txLCB2o1t3W1XbSs0N22nbX4RY202IpoSNZj3WlYwiujQ3MiMyMhUhLfmu20PGOsYT+b/bQV44ElZzhiaR23OME424dQTegKVkgTRXihKo23OsU80uOxqUtsmnW0nbYfpoJB4cg9tLvQgEJpZVWmI/L9c5230aTUcl3QoOvR8qF449OyyP20tDIhoHGR7bZJ4cc4vdPNtq21N5nd0fllbbfr5ZO2w7X2IivRu9ISaxpSFbTI8C0p3YBg2WRJY7WJ+vO1mPGqARjC2vtttWjwbzC5gUWJs7dpoJwaBkq0EwEqJkNW+tO2KSlrt7Wi/bapKgkCB2lwIpO0GOq469Hy96L7pFUoOnl1tj20S7UmSYu1g9LERP6SC7Wj0zwzScX1tTu04INjttW1e7ao6ou0Samr0P+iy7XQc/VyM6sbt4ehgVMo1Hu047XzmFUqnsrbtPxABuFKVWWCW7QXmC0rTbayOmqGvVvLa9AiKXjjIUSDhwFUwMEBoFF6C722M7YOh9W30fF5sHaGF7Znt8kwfVJzIopUJvgdtLMgZ7Rdt86H0gnhyru0uyOGcDDii7T5IBLxq7WM08u31oaiVEJ5rbQS8/Abq7R5IHCSt+A4Fxe1g7fPtUCIG7WmhlFjZsKntn21J7Xuazb5p7RnF2yYlbZ3tezAagFGSIjD4oWEByLj17Rjt7+YZ7Z1tre1zksj0zrGLbclUdJLp2llgz+0a/FJg8TAVbdftsSJaOsW+JfLyVPekj+0/7ULtAsjCfDbtv+324A46kB1C7QwQBTiZ7XvtivGX7Zvtpu27XJjaFO357QjM/+0uks+ApoK+CG/Yxb63sIbUM4TN7XDtw23IHejg+b7niEAdvpTlltQdE22oEDAdUZJIHeOkue2x7aPettoOMIntN0zx7antU54dVOPt5WIjhM3ekKA6sfyIx/JhftLSzKFQ7RXeS5iB1Pm+kBIO3vIdNR4V5DXOEHAwHSm+pwLPdOYIYh0t7ewiodpZNXAd0JD97R3t00wbEvQd+h1ucBgdI+1c7WNMOB3tGrNt+saEHYods20VVAgdUZKAHae12UA1VmYduUw+HW6A6O1C7diMXrAMHYne4e2QuWowUB2OJvzaoB0BtUzwzwhhHfJUqpRAONVqnu1NkCTgoR1RHULtmjSwWI0gHB3REK4691gE7fEux4Aq2qgdtC5d7ZLt1cC35vc0g3T0fGfthi4JHYoekgSyHXWQ/u3MofDtHpCc2nWASR2pRHNiKinIaYwdtqAMOkxo4XE0EvpYTuIufGlkQWRwFLF02dSmYp7i+Ab+fBT59TAFjHmM0Nh31d2ee03tdMB6uIgwzGSIuXRXuvsdRTLhTREY3klPDKvsv8nEGMKw4E1ETK9UNARIsDsdtZSKunqcJo04uAR6FOQ4zTIpNbqXHU1ALzirHcbkpx1w9IYUcG7KnD+BHLm/HeD8MaAAnZ8d6x3FoGi5jboupjCd0wm9lJ6NHMCEuFsd7LBpuFra+Qm05PaN8thwncGNuJ2gnWsdxJ2shqGUyyYDPv3JqtRJnLCw3x2fOeh6ZyabTZmZZLrinBWM+Igz8WU1OyZajRSpjXrfKnL8nx6oWuTU7LAMnZsdYJ2uFDGgi5Sx1GSdrDIZEcXwIp2OsEeBD1j8ncReeYy/yV/wF9iLsE6QvpkkklSI+42+mUydap0i5UcdINTEXsqd5x1UnXKdXtiUnbWc1J3SncAqiF5inbmUjzX7niydv8nTkAiIHJ218jC6Dia8ndMJSJ0zPkKdN7lunVaIMin8+A4UY83xhoCd/BAtnhkRIZ3mncHgAZ0nDo6w6p1HOGq6/SY4nZ85np0pKgadnzlNRHKw20ImnREYAPCIXmiNuXQXHXGdYQkxnZ6Izs3pdDKdSYiPuIGZex0CXuTlpp10nbQyoLmxgMsmUHgTKfbUsZwJuMkRONSPHU0y8cm+nf0mTZ2wnUidg53zCb2UvZ2guDWdikEckmSGWJ1dJv8dqJ3nKru4IJ3fOq9edZ3qBKSdnl68kkIJEp15MhV4RgQ5nS6IVx0x2KudGjKvxf4Y97pqELedDzmVaEqc6ohHnbGt08VhDSAYbo1vMJuw6kBwrNma9GCuFGuEKXwLSvueqjQjEctkJODgXekakqk1yeBd+JD01Mw0wcCHJi+M0Z0MwLBAhybOzRy51pCOSH+dKWXlZHNgfV4CNARdzfKhCIheOmgF2dak/3CoXW2dzfKzOMBe3lnR2PRdZ0plXpnlzJRgXcRe54g4uJxd5F4G5Rxdg0rEXr7NvfLQXUJd4OXlZME8wzQmWMWd4YT1Sq4qTjanIg/CXp1rEOURUF33MFTePJigCfBdVN7tRHc4yF2dJkUUidgcWZhd7Yg2hNGGqZR4XY6QzIjzYsyI7aCsFLqI0Z0MhDug9l10XSqESaBY3tZdCMLChkmI6+DMXVxgIhSGXV38vF37CRMpP52vXtLpoAnn4q8mlaRjMF5dbaDLKp9YkF1uXQ8m2xIHQk5dMkH1QCKpjYF2XYuwLIQOBASM8AgxFJo0BuX9/DjGVN4eSJKp+l0FQTFdil0lCOpdShSaXUxoSt6YsMHkaRAeKNX0brDO5KwseFG/DbZiy8ITGG1dUia4nC1dA13Lwj1d7MkKRCNdqt5DXQ65/V3TXeNdCZUOTMrYXV3q5vl+lrgf4L7kytgLXXltmYKOkHlEYcrnYVq03FEHXbduOuBq9OsojAhnXZLIF11V8KaGoXAXXDTQtaSLXAMFDu5g3NH0f0FKULWq3VyPXXeVx1yc/ihizoZ/XdkFCAg0tO7CX/qY4eM04vT+wVLQcVyFxdDdd11q9PxtYP6Z3vM8xOCGEWJhqN3TKKgIgN3PdLyiZ+QM0Fa1312DCMzI7LpSEX80k1w3XUm6yNy8+nkwb5WzXP9dNP4MVfTdMCiaEaG0ocjVKJBV5N1R7XSQSFW/XbjdPN1wVeDoNTwGbTUIZPCG1NiQRuFi3dr0wN3HCK80oMhI3beVJiD83aOti5Vc3Yr0Kt2M/tTd4N3CaQwOq+RjBMvkiySZ5PrdXj61qeG1J12BAcXhuO0Prc4mAlVtXHPV3WWE3RCgH12G3eBwpN3U4Uzd4CJu3YEBq7jYvJTdweEU3CrIH12/lZbIz4o15LpVg6GamgYI64bC1Ix++tDR3eLdCPHHqcXAw0TZyP3kwd1tXDLdB2UB3RLdLLoe3Yj0iPCwAWddNTx+3bMEF9IPXTFVtxJ1BEvB/G5NcKl0LN1p0I8EMeQ53XP+ed0y9B3BEVVl3Tw6rGl8XFbMxt2yCCu4et2J3f3dJrSW9ArdwGnhtand4GnbNPHIwbQWetPdOTxKwVf+xshLXH3hI91U7fbdA93/5F7dmVX+yMXdQMG0bJcS71340Giwz+R93RthJ9190ubdEAH86MBhkKhI0BfdpGgxVI3kM1V2zKHdhVnJHJfdL10QATjonPRUIQKw2d1D3VrlAD03XaFeAD1okGcylt0y9PfBbyIp3YA96eIk3XA9hdhfXYjI0D0iDCnC/EaRaX7QKHDb3T7iu91Q3Z/8eQywPRrdIEZWcNddf0ErhqQ9huzHPnjVL1zZ2rASE91f3Wlp11zb3R+dWYbEhIA0kT4EZb2E11wyocQRKDKZ5PDkZN0NJf1wa6WAEgsSCXDO3Q2CheS8PWLVJhIEcJI9uRqkcEEo1tCKyN8KGqWm0MSS1wplCRHQmj3vCopluQEKHL0K36WZAQVw3BS07ozoMgqTJebVUj03PmpqniSvUJ5lpwpRpQ49lD0QcPvd4kAX0n8KB2WpEm5wLz6j4eG1lKb43YHVXsyz8s/dUdD75F8K790jbKsKXD1EGLjRMj2KgcI9BHDlwaXVNt7GpbtVHQCfSOs4zhIsWFk9SuZ34Kk9N97GPTD4zD5HpdfdBXCCPVpMNRXsuAoxEhiAjse45SABulsYF7YDDTwguJGHDgaQY1KJPM093g0gEN096VR6TR4xgRiwjqqucGxMGCM9Iy7ZzDB2x7jRYCnx2/TawklSq2TFTjjBkz2VkRoOx7hR8gYCzw6KTevNtfGapuqk4hDdPbCuMgUQDE5Rg5G3/LCNua3LJnSGYIWLPQWRuA4i+U9weLGBGGcOZ/R9gSu4nQ4iDGM9Hz2PxEmxLz0ZpJwMkGy6GL/CNw6uOlCIMEHmdSFgJgL1QOrBmz3Lyg891GWzPfc9gQ7UZQIAZ/G5hGoNhjxkyOoYKA4ZTdi9tiwXPX5Nz0jNkes9J8S7Mc2RYCKfDrU9pZGUvQdwUL1AURoO6cGF4D0M1PgVDr06fYGsvYNR6AzaFD092Aw+aXgsIL21dVix/z2WFFBt02Q/Pb3myBC+EYCOzGUlsTEUEr3PPnK9dT0pDhWCahSo4NwOJiiEbEIYDQ6oDhGxEhjtQIrmYr2yLILg4DpuDPi9nL0twbQkLALQwEK+wr0EvfAO03CeFBwJzU7wvvhQ0RQ4vfhSzQBtPeUMCr1zwTYxwzQDPSZwSr26GJ6g2Qz0vX3xbGRpDLmEHUiyGLi9Qb3uvbYsug5evf69JL2U+S5wNkg0vRUOm8huSJm9q3VOvam9Pbm1NDy9nbj3IVq97y5L+cChWr0QvcY+Rb00GMm4iUjUINQJ0z2TaKqxwz0avX097yoKveVw8DrbKr6930KJFBwJ2z3dvQO9yr3cDrt2IhQ4TC4O3kgjvdq9kg7kIXQUl8p2fDNIWDHbKuq9Vkg9vUkUr7x9QpaAjb0sCbS9RM1qFF29O735vYm9WlJqJvy9vZFpvb8ELBS5va4MfWpNZNs9/CG6sQW9YiE7jTwCKkA0SPdU/khtvQEU9k7vKha9xhSvODe9AH1yIcy9CfH1PUohYH3AkdcORiHj1INkgb3tPo09spEdPZbNGUpL8YCOrD1yMbhlC72sFLCOwmE3vXkUogW8FLIU3BSfPVZpuH1w+eIUwhQCnS5JveYSFAFdCkmSvV2pFH0JDu5pVN5LvcHmJ73SxMQ6cEgXvRI0pr36FDUohhRsvYogZhRR0L3m12kCnaHY0L4zqdlecb1UfS4UUlSevaLmJ72kfTW5zzH7nrR9PXWqaWcmWn0lweEUhH3s5t4guvCxFOANCRSV4HReeRbaSL4UKAwZFPyUbXk5FCx9/3VcfYx9Ej4wIKUUan1yJZmV9NJOaq0EXm7ePBQQ3mp+fQniw/4wEEF9A8gDykloQiVqgCHgkX0V4EfIygih0C8kTtx3PJ1duFAMKtooAig38M1sOyRqKG/FMX396giWWzwmHbF9T91dKBQoUg0+ooii9ShcKJoE125lfUy1Z4am3H5ureD7kU19dWx8CfcotX1wqG2iVygF2sLg8PqnKO4oYg2Ces2UByiIKDikc3pP9uN9qSi3cPpslcpDfd5qGbbGen19JX396jfEXX1qDBF9P9iZfUt964kNfTCoT8VX4AImIhBPFYPasX14oqvInyjBfZF6yBBRiHXateB+epko1DS88KR6Jl7lkYGgb9xJsKt9pETNfZVci30KJYMBRGxjMH4oKAi6UHS5KShQ4LYQYbAKJOWRrNCFuuME75EFfS+6d30PyMj9RKJ5KJhcjHr6lB8oUP3HfWiwlSgTfbnKa7qnfTpq/3DKbt0ioihcKFjwHX32VlT9XLi5xiT94Kia+K99gnqhfWYo/fCPfRqiHyjnff3qg56X3k4k1QjE0OfhMxThfbF9Iv2J4J6RdX276pT9KTztfYR61X2yRZtAQih9UDIQJSggXEIoHIDq2daM8v1dIlJeITw0tHpaEcSbfWt9ev2I/XbgW30h4DRiodh6+Lz9XSIcXtgs/X37IvmFutzmRU/I6+mw/aERlv3Mru99wDTI/R79jeCYfSgZ3mpOHqHgTey9FE5qof08MIZSjDpzMgMUMf3mpJH9cihN6qL9Sf0WKJ9hrugJiAoeqxR8BNgghyhR/TDsuxQukZpaFxQFOLE6j2DIJtsU5lFXFJfIcvlh/cPgDxSkhdFQNirA5R9CMMhAnQF9OLiAFCcddP1N8qQitwzy1G5elrhc5BZeDIZuyLcdPjqIuEQI+bC5BZQYRNTsjD2eBFR4xvidXzDlGFj0Xx26kVhUIaA2KoP9cWBO9Dv9X/5RMNwpyZxXniX8lQkEXnv8TaQ9DG+euJ3r/Seed8juvO39sZ0Hngodx/3ysOrZ1ryVUtidp/37/VwUL/1xQGi5GErUsDZe0wlAA+hedobd/YcmqeCtCZAD5F6mLJNkuLCwXu3MlrjWkGWdH/0AnVIMaF7//XCsxMhqXtgDZ/0ksGQBMRh3/UgDHORP/a4qFF75/EAD1F5r/TKO1LDY0jP81/2oxZXAzJRSgBkqzAPbnd+km50MA6ADxyqT/T8dYAMmXl38XAOvXlJeC51sAw8m8l6S2F9Ecl7oAyNkkMSyA8hew/1clHBeVAN8AxxesfTb/VyU6ANyhkADsV7bneQD6og2XrSpdd5KlJv9mil6A0IDe/yf8AR4kbCm4EUYxD7hiPoDDHlTxW9AUXErHV+m+55rdfcd6V6MXTleKUFhYoWdxiG7mC32HsCLXiEDL2RBA7NekEQwLs1AqF1I3qQe7CBnJptC7XQnBHcoaV7dXk5y8CgZA4s4XzBWKMNeRLkjThRdjV4plL4DM14ZtjEDJ5BqgJMmOWIX2hEYNcyvXhcOux0NAw9eW171A2EDu17qAiCsszj7nsL5ngnzaGFWjrDnXhqdb9hXXghQN14z8Xbkyl1qgCsVM/E9A6wU2N7dAx0DiXLV8UUDCV2cQIApPjr5A+oU3CzSlMKGppQK4BMD/ZICAlTeSQOHdHkDwrAG2BvxawMLA7DekniSAvZdCQPf3qjeXSAOnTzAX6xY3ncD14Lg3jVeuXQtA0oUZwN/A8sDhwMClN8DOwOrA+8DSYjU3spAew0ffCd8V5SG1XuUrNCbXdRh6iULQTMYCIMy3ric8IOq3s7x1iV7GMiDDqZi3vTCnpVEg6iDAsm9XeicGIMog67q1IPS3rhh33k7XSAY/ECs4b9MdIXsKIs+imQ3kghQLT5cgz1EIHD95tOiNoXmwBdE5Vz8GIjaE0QVfANE0cwlPpckZ1K0GOfe2dr6GAqDH1Rsg9yD9vgVtUqDQEEcg0wiMIaYBiLJJB0sEWk5Q9TezPNEAoP/PGqDIliIHBTEfspsMjggqoMBYNB4hDLiGFJw7nEUWOMYej0i1ilBLFizPlb4jFI4gkKDdYXWg7lUgYPg9Rc5ZxFfndqYq3RInKgQPiDW1KDKn6FCVDryn8wzteeohbXPisB1rPxztQ7VQiJJgxVE+aTAFuDAJjWeGIR8ECJ1tRmMVVzqItO4in4Vg8z1VPxqfnoCe2QszBnBsi4+VLe1yTgGfl2YM6JcIkdYY7UZg4ho8FTZg7mEqYODg4NUc4KlPb2D0VTsKDGDh+hrta1UQuSa5gmeY4PuEXgiWYPjADRErtHmIrm1rVQH3t78oHVZUgT1MPw9cYuYQkS6gz8e9VTsGHWDh+hFyjRE2NITRKODnzWaBFlED4PZVMdk3Tr7odlUi6L0/Fh1IFK3tUQOa6HwWEk+9Pw48QIE3sipg1oeCoJYWFEK9PxU8aBDL2R6yJzUuaFYWEuowVTb5B4EbDJ3g3AKYRif4P454EMwdps1Tx4gFEuDnzVptg3yxEOfg3Wy9uCZtdIx1d7grKBhSt4bPAtUSbQWuMZkTENCdXcJlIMKRIxDSBY4jh5c2DhsQ4FtH3ysQ9BQ3OCzVOGgPEPsQ+d5nEMzsMJDsSKeJXOI3ENyQw/1WC0VHHq5N0QpXq4Jm0KIVNuCO/H7Qq4Nisn6GAhacA00sBED8oTGQwJIDQl6Q3TIZfXDQlpDUA1scMXx3iDqQ6hKFZ0Y3L5KEEwMXFlEYCT9YsbQdA1BXOXxoIZzqGRKDQk5vC/1vBIRA75D8lTvGYZDx5xeQ6mwmEyC7hTEGkNXQvTiutHGCi8sZUQH2AjU6xjXUWxKNp2+FHANgdTXA2ZDz1HQkGrUOUP3UU5A0zh2QxEkPJRCFvVRnkpgKYWKE33dYp5DAcKthGKUkUOTwneW0zihQ6aCagzlQ4ogYUNFQ5UDXUNzqHjAqNSxQwyQWUPBGMDuSUNySi9CqUNUDdRi3uRC4S5DlrjNQ4jEzWKWuBmKc6hkch9CbUMavpqmTXzp/CuoUkpaXadDn/XzivJy8VFlQ1P9r4TtUT1Dv0KbQ0McpCnxivkoK0P1Q890t7S41DVDYCitCVZDtUPUHkuUrwKu8OGdE4pXQzOU4lK2DedDAJ0lQ0dDwUPzYoDDwzLbYq/xmUOC4F9UX0OPPo1DwAqdINNRjUMoVHjDL0juQ76BaITSDVGw+oaXsc1ROMNT/OxRBkPPLO8k71FOsMEN4x1U1XGtTkJLlDqCQ6rouHhsnoJmFVfJ20IY3BXw8Z1slBnCL+Aiw3Gals7ONgop/la/PlI6DIYbfQy+itBVQDHYEzKcvmLY0Z2GrNrO247CA6McUMSpeM0NhLjhtZPQoV0gND3O/MOwnbC0a8UyEKyGs/KkgtzDA5TU3cLDnZiNyHSCLr7ouL2gI8LSwx7DSlGcvicEOLjKzgK+vKAAw9TdlCDwEI+G8nKvAt7Dk2S/pWpR0cPrXSnC6cCh2ACdumrBUcrDMilKyeFRxVCt7pa4QzT6w6xAC53C+kLIqI4f/QgD2rW1PMgDFYxCwyV9k2TLaF08IsOrLYhUzsPouFB8xcM1w8tkgWWWPPSIb3S0pOxwJcNzYLV827Sa+KXccKxOkH1EDTwLna3D+cMjeL3yZmrGkdADtcOJwyAQC8OWuOvF5pEzw2XDH1Qmw4XDecPUNCPDsIN9XdLSVSQqjueKFVJrWiv4n0kIyUa5JlDnw2Bg1dRHw8mCJ8NogyltM7Bnw8fDr0kBTG/DXSSfis8No0FfwxCo98P2lgAjm0lMg6owHBRDrMDaeH0P4JipMr0nxBAjVgaEvZAluBrk6L1OJHm8doylKH0EDMgjfAaUfZiW2mXnxA4O06x/pZgjQnm1Ce58mQ5LQJpc85ivEEFw+lHrQr7lHO0seNgjmbziIHS+vayPQiVcpr10I8gGHUOK5v6BsMLGvFO9DXqmBiQjJhT8Ca6GKQ54I9FCgiOvuams2EYGvQoMlXFwXEaGcg7xwfAj7bxnvbGUBGQsI/J9UiMoI3VO40gnUdx8J1AMDWZ5ZCOkRt/8M7mGrKqG/PmsedhkOiMVvS9R4gY9YgeK3n1PQRis08l9vUw0MCBvpWu9ly3arOfJ+Kj47ccETrzKmRB9ISN7XDGYR739pNYjLjjhI8ustqWBvZMEObw2+gu48y3Zmh7J1b1KrRkjwhnPoEv5ySMLxFQ4Sb3xBLwQtqXHPVyt/COumbS9Zio2Grg4AH3xjc7WEhmkvY8khLYCODa97KVTLGQZeSPDcjlR3yVsmdc6zY1D2LYZ9b3IrUuo1FhJI/ZyjFxEGbCOG6zzkNMjogWbpKx0EhnVI4sjJQbRI2VM9SwpANUjGyMumIlUDgWZpGJccSNnDhfoJggRmV4jgFz2I/MjqA3rqMU6SSOrI+8laSPFKg2sdSP7PW1JzyNGOLAj5SRCICkZLiOiDT4jMZknuM6lRCMCOI+9kw0yrPKZoKNZvpcj5SP3eOvoNlwvGYgjm77wo9EjLdgWCciZ1SMyOIcjWyNJ+e7ENaz3GSQjAfh4o+mZgr29uLys4rxJI6344iNXI509wKMfIy09HvA2GuSjBKPZyBEJyyM4o47wjKO4GRM97CP4ozq9/0GcoxqZc73m3n4Jl9h8owyjrKP32OEjLKMZvDKAkg7X5s6sndj1Ixe4ZKN0o709CqPivCW93CSNqKvJMKOyTW22IKPVI2d6ZSOvI+7BlSNNIyc9ASPVGcs9lz3PNqCZKH3BTeCjbKPx3i2sLBmchuANx4inI1EjOIQWOkwUKSNIOAR8s3hwoJsjhq60+Xaa2mUho/He2+CuKRFS9n1SwVQjRBmvPcHs9sleI7rhq8kpowTuA7xJI9CMcFxsmaG93nX9vI4ZlRDmdcWsqxkuvaVN8CMvGcUjlpoDvLqjd/TfIy8jkKPCYYUj6KOho4duFTq6o+nBTKwWOKIjDDBooxgZ9KP96H2jgVQOvVvoyAnaGRc9/Xlmo3EjKr3HQnMjfiM9deqjqqPs5lGjPRnNvV7oBaPpmXmj5Xl9o1kjJcFDo90j/QyTmvSpmqOxcBWjtaNq5iqjLaPa5uMNLphKo8FwfqPmoz25zxrGo+0jp3Xxo+W9tD5to66jkb3GPs+jZyMjI0wOD6NHI15IN6OTGRB9uD4S+Eujn7nQI6uj4GNWGDuja6OrLEcGeyPhDkhjDRn2o5aAyvgfI5kOjiAio9Oj3A4YwvEpfb2c6MYJ2GNeSCQElqkoY3kOFGOgWMOj73XD4KRjyJmkvZwySqwQo/u9uGMgyNij2uYieo+jr72dI20jiCPMIem8AjisI+NINGMCOAi9Os0ro44ZCiMBSBvkuDgqbtu93T5ZrLaZKQ7pyCNg8pngYwkjQ5jzo7nN/CPymWKj/s3PNpSZsmO5zTyjl9gfoGFIu6yLGSajemPGY0UjZ72zI1KZH702zQxjVGhqAGWjRiHSY/Q4KA51zV+jXqPgY+D8laTKmS5jTc1uYzpjgKPcDNGsYlh3o+OogCJOo64M6NAaY7xjqaA8fC6jAWOZDgwQVvhgYykOcWNcaPhjGnBJY+x8ZGNVzf28XqMwfV3NZWOAOF4iXkhFY/Ow99gIvbnNCqP4o5RAQ0hZY5apn8ymI0Fj/yk3Pb+JcHxWrDlj3A5GnNljXKOUfcNjlGNrowDcHqBghsRjcBSfgOTas2O67E8wJWMQLdIa/qM0I8AtVOyyOOmZAyOoLVtjyiD32J5jq2PwmFw4r6MQLVVjTGNpvXNjmjgJY3tj+qMAo6CjHmYjY5dj+xBB/dJZXiQVo3BiZH0ro1IpnyPZo64p91QOvegjxJAgKXxYTL3MI2GA4GPA44IpGGPV6JBjFYBQ47SjCOOSI+FjMZgwfNNNjqMVgBtjM7m2o1+ZNWMFDBDjFElsI4TjJr0NwR2stcngSTx9o6NzIzBJr7mlIxGZJ3yEI0Ksb6WM4wkOl6MZyRx99ehEox3JpmP16BWjMWL/Pj9jRclJvRPo3OMOyUdjcOPaZUTjhiN2rCzjGL0nuajjxsmtY10Ms6P3BtLjo/Xk46IpEuNOIyDj/S63OPwtFo5L9lTwDRXJaqggPRWtFV798hCGNJcVbohm47Q0c/LhkTrW19SDFQjE0R769KMVBDRgKHYRZjQW4wmIMjTEuBxc8xXqw2/UgeMrFf9Dgi4bFXsV0DiL1ISVCK2pfVaVownvkXbjSpXTETr9yeM3FZUR8eM3FTMtAihyoLxcyxVPFa5cOmDMQsMtISgoEfx0QJVyqMHjN7R/FYPgxHBv1F8Vx9T14zXjYJVvY/X0Fo7eQRzxZTSDYC08v+zIlfyV73HQ4h28GJVDCIE0JsA4ldKIxA4jRLpWEXw6fMA0icoYlaMw/DRLKEuaUpi8oJ/UzWT08fyYk4bWkfHUf3Fr41oiKfgnuB1xa+P/+ZM8fVh8lUvjxjyapntxFPhz4040j4AGleyI0fg4qMPjSXxVOsF8YfqElcR8ujzOumqV3eM1OG/F4+MGlTXwgY5D4xPjguBo7avU3rwYlbB2X8WP47ATOlj4JbfgvXFFJd+YwDT7ECfjRSUIlU40etDrpMv5JIzazeH4CBP54zpoyjwkE0sVsfn1PBBAt+OfNg4FxKh1MB6eOpWWI2zOrEDzfI0wYiV742Txhp62/XkjLPE6lfAFq9T2vP3jkgCcE33jNxVn49ATb+NLFRr5HvgwE/njOvn1POITSxVkE9so5Jhd488RfCU0wPwTHHgc7ZNEHvr549yVMfga0NTxSxVxvTGCn1hntJPQH+PLsSZtDxVT43BxdhP3nLITIbCWExITlPnGExhZ6vCbyOAN+hNb4zwTNHHyJeJEwZVnToJELTQskIJDUFGG4SETSzLstlp0KZXPw095Y5zBE7GVKZUL7PMs4RNxlcltSRNREBkTkZWhE3kTVHJZE2CNchXdNOyQvaKzNIhKB0lRmiZ8NUzd8Iy0tYKOvlK1bzRVE3zdHgzdhHGS6lU2+SP07KHJ3WYFNOpPXOd+ArThsvyhKPDhiI0TwqFI6BP0U9aSfH0THrD6wJs04aS2A1Oow76EzJUTlCIWXC2UtROAfDjokJy1gMO+bN1TlB8ksa6utOT5U4i1aBa0JQXe6eahlxM1KBMTeMiQPd80iEoBtFf5oOKswxD1n53uoa/Gdoi+HHehCPDptfOUiQiBodm185TwEO+hL9KemqRuUaH5yN/wgJMo9Wh8fbXzlAVArwYHTHKwL5gZoaAirbXRgftAJ6EHmSZ92pZFocf+9RwyDeWhCJM/HGaINaEwk2WawcJOfjA0WuRMstCTnkAyGAyT76HBhmxB/a60k4fAdoh1tG7KZWCWxKWUA3kaCWNgj0wJgWCTxhy80NJ8bYG6kasT7dKktMVQeeCKYC8+U5QfwNKgZWAF3OuBUJPvoSNY+bBgltCTDMyQkx3iBxPHPgmBKELDvqmGTBDok0XtCCaWsFd4uaGB/t6U2EgvcQ1g0HXlmpoE7i5dYCCTNJONoarKg2Qsk68G1MxdgTcJ0JPqk7oQXpMYItH6h8w8k73gdbG4sI6T3fX3cEA+0YEqEGz193BftcqTodgtLtwUxJPprH71XWC9TMqT4wRlLud+9JM9slUuEoSekzmTuJO3HgKTnxyZk2rgNpNzVH4wB8PGxhIIy5q1gAFk8wzRHpETLZM0AAuwNxRVfp2T7ZO/w+BhIqBtk2kTzmSjk9ew/ZPDk/Ryk5O5mmdOYfB9kyUIykPLHSI8at09BADAzWrF4b9wCa2vOj3dyjTeds1qV11/BWNckqDHk/2k2jRWhiaSa+bAum9dZipHCqhgX10Xk85ObRMUNKVcn6BytVUE6uZT+J80L5zZPXPoe113nA0K/HFXk4x0wFMDEbBej9T/kyMoN3SWDj5yEB5fOhjdPQTqsPo0cGAs4twUnlFLE8S4nPDHOn8C95OZXJDdHq0Pk4NM2vjPkyZmu8MlI++T5FPU4vpqLWZjE5s4dj3H1B8wEuIYU1ToON2MNKxT4k5C3chT14jDRY60X5MRhBxOUt3q8BaiTfjgsK74WQST7lhgn5N7BNeiXmaEU7JT2WokU0C40FNHqAKGUFNtzHu0FLSYNAEsg1HN3iH4u5NBZpA97qRUU5k+/vg4U5QQhN34U0FmeFOHkztc2qRWCtZTuHSV3eCFD5Pc4Eu0hlPpStPd4IXVCsngXVxhSdti5hBWUzKhocXCUz0EulN9FXMTcLhguKP4tt35kqwsU/juU1mSUV6i6A5TIXSvcM+0Peh4PURTldGgU3C4FlM4/C5TJ3BuxfRTpzi0U17FobRlUylTrBDEVSuYWQTGCjj8dXCSUyGM7qIofopTjVGIVfMEmlO9Ufq0PQTMwJfMxlP1U6P46d3xUy7AougjUzuT8hBSdPFV5TjFU+AsvVPFxo4Q55WP1HZTz8xF3WA0m5M7XDFUy6hOU4tRh93tU8HBJsj7U55Tz8w33RuTvlPbUydK5hRwdI3drb6tZMx0H91I8CdTYeg/3T0ETcBi7JXKHlPdU49Ra92cUjeTO1yfU8lTupAbSoNTqlOk7P5T4FM/U3hTkNO+7E+TYNPR9M0TX5MIU+UEiNO7U6po61OcJnJTnNEQ099TqmhR6Mo0z1Og0bsEgT2QmsCYRwQFU3xKIfirU9jTSfirU23jXdXfsLXd3MzEU5ZmzTi3WC20/D2/Ff4wSzpJPczTFvjaVCO0RoxCUeI9ALIPk6cMk7RnCvDF/nAAsr5TzZxLtJ1paUWxw3CyFkM0Zq4SJMzZanLTh7Q4NIdc0tNIbGjFnNM2dHPgqVM2PU2CglNLFDoiZnQK0750rOAi0yd4v7QCLq2+7NNxSgeCblPSSY/UdtNjzIo9dHSBU9ToFNzLtCrTGuB+01vo1cXlmDzi2tOZzPcaNnTc06Kc1WVq4qeTvMguU07TgZyjHLSy0dPPzDDwHtPgLLzTTMw3U27TcQS0zPKMDtVG4n0KWsWZPcXTyTBidHnTQbIR4EbF2dPGqmL4o4jisktT5zKqdELT8Cz1ZfKyadPbpjtTjKpBdCLT9dPzUz49kPg100AskdNaXLxTesUaifh0SNaXzH8cV4JNCq1KJtPe07nT0T0Z0z4K4Cwd0y7TfkqkhSzu+KGPssJsn2Qd1ID0tsCNHK6oTczg3P8del0JFsBhPGo9w5Xg/N3osMy5BO5h7cWwu5iaCra88chsFYJSJyPq+jn0BuXuvPlUgvQn02t8FzJ1dAtE+hhhrHdIkIQiLTv8QnLg3BhAMArJMKjdt9PUVANk/eb701QCUqjp9MIc7FSuEEAzborqBFuSpixddEZAckHaEG7tpDPYBPz85bwyPJfTLSkepL3twDONiv4w2e0oM/TT7gOkArSBFMSThThDKvSi7MrIcIg+MCr0TdGSSqkdxqkyUIxKCdhztdf83mAKEhFBuIp3WMBKbOrGqfSIS20paphYv0zuvW4SEVDNtZozeRLp9ekusBHTSHHpRpjbfKWswEqP+px5VimyMzY8EB1KqWMUKEq6aiE4q1pwbHCa2bDiM/wztjNJeUz0ndE2PMcO12RtqDZII21iM/L0fsjj0l70XC7WmK1YRRIRM84zQQ3Q7bGA7jMwClMqcjOWM9K85iomM5F5oTNaMxiaLxDEQLEpeypx6Y/t1ryeFslUi9xlgO68kawMkEWwMnkGvLxImTOtg/xSu2gKaHOQSS4GvFzRfjNGWsGBxjNOPHYzwYGFM24z0jNaiIxKTjPGqSgNkenLwmO1L0UTRJf0XTOOvO+yNjytMxozQIiqSqEwjTPFUDMzAaAaCY68IjOHbRUzuDPBCBiaxTP9M+JRRzN+ht0zAmxuEu2QnvXtM5BsbhJ4oCUz9TMjbXkdiApzuqxKSuTWMMGBHTMjbf3tuIqlM2kSIOV/MwMz/dIhM468DjOiM0kzOzOuM/3S0wTsVEdRAjO9ILwzcCKqSh8zSO7zMy/wzzNesIgKIMCbM/SG8IJQs8jEVa6G9WCzhzN3xE2TSt5xuuzc1YjV9E6yzxLUszOTWAKUs88SbaAbvLSzfRRPwxSDE10zsJMjVLMnw9q4PLPMsxyzX0lGuQKz8Vx8sywSTLNis5fDWMku8aZlSy0zzJGwROg0o+jwyHqKs6NATUlyjOcqSrPRZVzwCoitYdYNurNU3jqgofhrzLUYe8wB+MQuShTqs1Wlu7UHA0Ig8aUQeKwUiQi3jXI1mbCH8XSk4kD/yopB7AKbuH3tMhiOIABeUVKmsyYa6qSgyoAgZSo+s0m4yWi1nO6zJswtRGjAXyaFAre4p6bF4+MqCnLX5umQpUH2s4zwA/gJXdazMz2Ws2azU7h+oSAsh2HIwewu2Sb7GAs98YzmJgoUL6XIjOGIFeSTXu+4hbMJCEZKLDVus22zVyTkNRGw6fHuDWpoNiy9GPADOvghYvUmtrbcJEAkTBCb8dHerrOXAyGzJiSqJAqzAbMHPQ2zpbNBnINtyPAA8M8q4WHJ3rmzZSoFQMQFalCqLI1hUSSv9E6zAV7npX24RrOwjZmz/Sbas2sOQOLlXYEmZd7sLkVd+rN7Dq+zTkH5s63e9i5fs3vMr2hXs5GwlOir5sO1Iogz1I+5A7PTZFwIuwOviKOzS52Bs1R95DQApsoI5EgZ9vqdM/CWeXHQYSr9TIhlNbNRgUOz3OZSTu8qRbO95pJkZZplszPon7OmXfHMM+jqDLWdlkDGPu1YgQzQiICDlHMPnPUmKHOcfZtAlbOR4Je5mrP7KvOzxhS+iHUMy7OWvVhzuZ28c9wM7mqqLBNh3uaAcwRzh6OnEmQYa6Q0XpKAZ7PUc7QjuxLYc9mzfHkic++zzz6jDE+z9SGp0KpB+nOxcOQMEnMHs0/eoTzTIH+zy6NKDEBzdCCacyZzbkGgEIrmJbMWiGa8og4uc3ZzzSEWc/WwbnM4KLlo8Ayic8YU8Ughc/pzbXm/s8hzBiyEjjJz67PcDMHQSHOhcwo+j7Pwc7+5trOvXpJzMj6wrfmwsbNavrwM0V3Ws+VwurMFQTuzks3j9PuzQnLePoEuvnNuPrVz7YjOs7LN5HApXTqgF0LqcyRzTT6CUMlz+nP00zcpHvB0c3gM5rOqruQ0Q3PsFDP0lLRr9MB4Bgxjc0EkEAw79Mic37Ow8KEMTIn79Ckus3OwjU0Mygw5ZifEv7NyDKbwWiQv9J10j/Qwc38OZ7PutFZzn/R7cywMBiwcFLYMYQxdA0AMs/Q0DOAMOQzr9GxkhHMnuA2TU3NIDLwMoZMdYmc+OAyDmj9zM+YYDEq0IPOQJZ+z4bSaBKQMybhsBSIMuSat3n9zdAxivP15hQxv9IkQWgzsDP/0+RZSc2xkKXAXcwhz4gxlSJQMiPNJDBIMJ3Nk48jz+3PBvFx5C3NyDE5z2Qzo87oM37MjDDoMG3O0DutzZ/Q7cxX1TgyX9LTzbQyWDL0iMHOyaPdzCPPWfUFQLPmUQNej3qPotCp8T6PaDO/5IaHe5oNzN3NY8ytzsQzG5sgMGQwvc669QgxjlP+ciQzE8yqAszQMc8YU6Qz/c2pc2QzY88icbXMDQ6UU5olGfYZzCAz/s65cz3OLgRdNdQx6ic5z7Qws8qpzovMCKmQMvwO1DD0MuvPZDDNzDCM9wYZz7LQocwbjHMOnZoQDPqDEWIZU02SwXpU56NB+QkqdyfPdnf6zSfPnYvcsBwNh4g4EtvBvxopB+UKa9G1D9SYCUjgKTfCds60EXAJEw18mGfJJGDbTncYApjBSAgQ6IiVCZfPcUl3zAORWILAGolRQc6ywUQJYKr2zIaBj+pFonbPboJGYlxB2iLDAxFh4ku1Ccl64DTJUXZAlsE10wFIAlQvAikFkDcACktQ786Dtu5jlmMMm7fM+hkvztbO9Vi3zmJLz8/XikFS183Oz9fOIXN22U7M2CMEYrfPD85WgzZh98zJBX6Dg6qj8/fNEsHQCOmjD8y6gBFyN846wCqCJvHGEZZ2fknWBCyxjAzPzkFTjYCEmfJAtvOvzeANgC2vzzBQGXUALcFjb87gLf/OQRCfzG/OVNt/zr1S1s/Wg7/M38zoYjO3Hkg/zyypIC4uYpJB5c3nzPURz87QLE/MVisPwjbMj88/ZKAuHzAPzouoYC/0mV/O7KSILtZ1NQtI5FAuCC3gL4jk8C2uzWAtbgQgLPJ2mCFuBoyzEXUwL8jkwC8/9Wgs3gRAL7JAsOSALpUFKC3uYJUNU3hZSUYqRQ5ILPdmQ6Fc40IjN87spvmCAC0ASP/rGC/0moqCpmBuYNlkr81DCp6b/xnJeX/UNVNYLZ/PKg4nUZBiPdEn5wQv2C/c0AAZ1dm3zVzQ+hgCYFlmhC7BSGmC582ILftwqC18majL8WNqEa7Nf817YtngalBYLwtnsbG852F6dQaokmfOGC7g1KQtp8yRS7gvmncRY/5L2C4YLmwwMC56IVAv/hWMQQypv8ylBNPlifXoLgwvYc8MLOfMIiAvzsbWuAwcAzHkVHLFmEbCrWi+gu/rV+l8dL4yfgaU6Xx3pGnJB/O2rnhk18gnRzDXZTwxrC8+MawZfHW5ca/ODBhTkDkOGQcvwKAzWhNGQjlT/SsLkElAMjM+MlwtIsDsQ1gknC0s5AIykMgcL2yq/Nn28RgbYnVsLfbwbC5+aoIvLC0pZ8rB9nIECn1onHczDnZi72LCTo1TEGPI5EjqbC5WQAlz1QTydulb5g7M4dwsgSjQ56dwLC0SLeQmrdBUL7QSVkK1BIu0gi9SLg0RTbUqMsIsng+CL3y308Gk5DDpvHRdAezB5OXtKbx1lgEWQvItt86ykv0Qci6fzwxL5eYNErIswNieDjItHC3gYUcQlC08MkItr0dbtmIvyCQwsmfM2zvmDs1iDZIsLVjNKGBe8Xx15XeIL+wZXC07kmUHjlD0MWNSCi/1BRovysBaEYDlxWHqLqG7si11BWouE0DqFFIt2iFSL4dDNk1xDkBNTnHbAG7yAUEGLikZRbS/DFuS8orSmeZQUdaGL17Ab1PTmnLOLXTtB8YuanOGL54q0fDGLdnYMs+mMWYtc3jmLuJzRiwWLSYvCs24jUBHA7H3Sx2hq6SRoNL7VcPNszLHc+NuiM1GE0c5ozmk5qErDjVjgYmgzac5f7JrQuWHTURWEZzJ6QT4k89CRXj2LGMRfFr2egagagqIQll4ti5KCVjLp6rjR1Yta6ZLRq4v4YnwEss7xeLASqNEbi7deixXT+AxiwDiOJOdof+Im0ato6UQA4DLU82jjaROLzcKYA+eL9sNFSZDeCGini2OLD+IE7nSCSoTDaSo4gs55FsdeQ9g6vkOLKPy1ixEkYzAxGPzhiL6C0DtkUEs1DT+JN9ij7H3SIBw36UBLPL5ti/lpmNFQHMfp4Gjc0ftokPz3i90olVKX2tHR6/b6GBFRrc53iX7xf4uWzjuL6+mlKkooEgMzWMNRKokHHOu4Bz5SsgTpX4vDzipoWyzrUUuLvDhb0YxLD/wAwhqCfzIHHBjCdaH5PNVwuZSkS1RLV0Kw0X7DO/GkVDEk3Wg78UyenL6DaPUDvoIAS54JuEuGglNoXZ36SwKCvKD3HTGoUc6DBNM4GktniyEYRCL7i0EJgsz2S1wIi850S5JL3SCiNG7IaLmHiMrIKEtt/UEzgviYw2gQIr7yS7QpKr4hS39kjYtzaqLU6ciozn9SlriHi//s3ZTmS2pRMEu1XRpLMWgLQjvwdMj2SxV8Okv4S9gEG6xSS02LVALohEVLlom0A8OBIoKWS+70QksQvLiKBqg3PvZL+bpCIk1LuuwuS+FwIfR6wtVL8vSHi+VLzinJS0sNJhgXIy5KqYnEC5csN2OWPGagg9k+rHwi9kszS6pLChxhcRCV3gWyswQydLEjjH3VB9oBMWfhTSXslEYxjg1lKfSZBcrCMXCI5FmtbjSiSgNXfAdL0iBbS5+pCOFZ3NjY50sQZPADphib4a5Ye0tc7nXct8xRlE5R4mE3S9hZTYRy4a/+vQZJWhnhwMuBmXgeX0sJQx4xg2FpYHYY3Xxn/Lqp9JmAy9hAeqLYBP0uRmqbS4GZpolV/FjLHp1oTGKo6V7ZnZHINqi5Jo0YTagc0sNCDIkoWuZpizjUy4Nhy2B6lBTL70ul2cIYgkzPS5NDQrHwZL0d11Q54f9Lv8lHPCrh4MvXHSTLp0u5dATLHMv5Q/QcO0ssy+FibHlcYUV0c0jSYcZpPgPMTHSIAizPnfUW/6QqmGTLbV3sy2NJiziCyzTLglC3zHHzh86/onlEkHwbE/9I3FFWy28YAJ6hcDc9d7z9UMr8bkmotB1QjssaVANg/FAFoSeJyqEy+tddWfGQ8BL6113aQPx88LLIvMlJ4csXRJO9qbHdiO7CXYiBIqMeJ+bJuDmxPstQvJ7xl3CTGsDoXXEShOagzlGxy2bIg0x2USzIr4nRyx90gkki+Xq0qvq1FWHLxLQy7Juh1LQ6bCnLfss8Il5sje1eywo1nUp7dLxJsMhpZKtEsK62Ipb8HcujiZ1gLR77XZXLmiIRy1HmofHvSN1YP3QmvTowXaQx3TNi1rQkXYbUhcs8IvPLDzy4YFTOz5YVy68QH75xHinLh8tzTDFxHcu7y4sx+h7/5OOBCLRvwYU8qcvBwbTlJ+StyzfOo3UEvPFJN84YxrXLddIiMBvLbssiLg3LTstVzg7Bu6EAK5YunUpVg6/LnUBndaC80CvmyN/LB+QWrKLag3VqnPKioto1yyToSokYKyvLp8tMkldYg6EYiV3OiCubyzrIsCvvFcmJdi4RCq+8qLEyOLjRwCuGyG7YQiJzZYAykCu9oZvS7csRodagljC3kjHkNCsG4qArN6GYIvh+M/rMKzB2ApIeyy5Kt8tzTOA4q+TSKxIgeX69qInL9qxf+sbIqOCxaNnIId2rywV4misdodwrzTCqK53tF4l6IIoraeady9lMErKBy3dwdCuJoW7LfK7uoM/kDCtirkl1GcsGse8YLivV8kHL7xjFdaC8dkkKrh/yfdL//Lq0Tewx5DZUga4BK6Rodsuhrh4rB+TyorSQDPxmK3grBcDkK43LsEoJK2vtRCsCkO/Lg+i5y2F4qCsEofEKTjqKoY/LXGSfQgnL4iv4ibN8FKENYjOswvTVK63L6pDSdSSh7SX84cNE8isyiZYrniuaZKd0N8u9y09MbUKV5l36w3jZK6kra3hS2IOhrct9c0IeYfAedVku1LTyDT/OCBzWzpoCIj1eKwNxmeSkiDVMmZzaqDA0Qch5AihwmysEkAECF1RLK+HIzgLPzhNAYLSwRCrUdomheLEC8R1zoYFo9yvHRNJJd8veLNYuPTJnK1wNBytsHLVoxytQkFoyDxjbK4Xk0sSosdUCXsyHKyIr/PLtLl4r0gJiLmgS7Wj4uFCQCKus2iECoXB5FLFob8wXK4LQtWhCdDcr3Lwwru8rCHXE8WpAJtL8VAM0+ixpPRnyiK5KPbCro8wxPV4rVgKCzFJUddI84DjMNhT6oZvRzgqnK5GutAJiLvNojnjm8gjIoIiP0vSrDi6IEkfS5QIsCPlEKQpxzBCrnyuGyGyr/XCGeDwrUqunCgmhJivFAko9dct30pw9XivVEfE9PKurEJwCIj06q9eYgz4aq2KuZKuodQoiGzw0xNlgyCLmq2UKvytmyFyrGysKq6sQjAJmLiirqJCzK/cQuStwLDc+GKsiK/gNQS44q1POqQLyqwSrVamrSx9sfbDao4EYzKjORdG9roHg3UMVknhjIygJ45r/oKIW5BjZq/cQ0lSvESzAUYgsuHpBrxFCGSWrKasMCeOgkgGSqAFA1atlID6OpatPWAIQqhlPoJs9hSgI8eWg/S6/AIkRSauVq4MgSNh9q4ha+C6ZgQIQythPoHB9JvMw3CnNO0amFBkMM6ueoo09IhQwOkur86tITjw6QxWtZAmr46scGq1OY6uLq/qo66vlKGs2O1z7SL2raavTtI29VCyXq186WiAKQRV2plpxRalUEJEgtbtFp+BtPKUYxatOgisWOAkVqzpm86sYkTWrJU6LqIBrRhiNq7lxU6sbq3YggY4GhJeBq6vPq8JBOjpbqyu9VLDIa486AfJ9gQhrWGC5q4urxBCYa74ReQOHRW+9T46bq/ZTJGt9ET/AdPK+CLBBeatPq6hO9atqiDLl3v48EK5UbRhbA5FTVz3akeYgqLxlg06ypRj/qy+0VFQnq/2rgeD3qw6w+PD2WsXoP5Svqygga41U4NFgTEHoa5nMims+vWRra1Mvq4mrPpDsM5GDQqi1pEFIJL0tkMc6rTPlDAOpMaDkU7+Ig71puBaoNWBWvM2R1mvYggTw+8rw3sc6PtrKAi0hNmsCcK2Bx9jIBYZwlcBRgeuG6vb2qP5r/ixHlDSCXmv7ZMCM1JCoglVD+8on2EsL3nFOaxIYjmDLsKiCC1hUsAUCTpA2a5eg0FUnyhQY2WtkcriInMi8kiZmBFCCAso9qvUVEGxwTWS9wYQu6agxUKZrDCF1azpy1jznzNWY1vXpqF/W3/HdiONgToKHWBwCYWs/q2JIHAkBLKSQToINa0VryiGFLvVrblyTa+EM0RhDa66Bg8tOkH1rgMvNkZ/gaoKioKGBpZEOa6Pe5Jjua7trFRDPDAFrDisa+JXyHL0kuoZAxBCanZWRh2sl861rRMhZaxaC6Wu58S5rFoJFQ3Nrlk1tcQKLc2thKIDxzHBLa1NrYmbpWBwqbMFJLrNxa2snysgY8mYYWcvKKWvKHJbedmt5a09rCXAmvEMRtWtrqDdr6OtbnTpm/mtxa9DrOmZDvBoCYOuA8U5wTWTIWJcQuOsRSPvKTzBWiBaCOxCRa3bA02uO3kc99lS+YM9rSOtjmOxyCY6Wa9sRTOtiZj9r2xG+zZdxIOsja2Fr/otREOerM0E4TElGC+wFhEtBMus/DVyzK5yTPWEsDqihE1LrYSwCSErrKYta8arrBwJzQXrx+HVq64brEYs5E7OcxuupLOrrl2aW67IYpuuMg6UTqW5PnFRVgxAboI2pKdAKEJbKSeQ8rNSQmjB2sPjQPusanmMESMa3kr7ropBJ4YLuy5W0ZPWLnMgu6/7rqlnfESSa9LAR64XQo5V7VShi76YDleSQHsBbqYnr+jAy5azusevQVZjKyuJ9ARB6X4S8osvkoetB68ndOdBd+AeV/7I564+pUqjNDktcgBGZ62nrFlwB1QkmNlXh63hp95XR68fdu7bF64PrOVnahGBVfetqbEe6OfDp62ppc04BMEUE3RIz2O+Vb7KPixZ62+BMBKquuLQVokgtFcpd6/Tl4lIoVRdcwe55frhV2etgZIxps3oV6+pVRWx8+JcQdggF693dqetD1aq0fGnD65vrr+vD3ePrPQ6P66rll8IsVZXrEmkhTnvr+0Am3ThxvFWu6/WL4Bt1WLPrGhnEkSkwyeuX4Wfro+tnMsAbfut8XEZpR7qw2PHrZzLz67DYwevl6QNkW1gEG2cy8Bv4G0eVotRqUkzVY87AxFZSveuDEMKGCLI96+L+gBsdaSeSP1UVdv3kuIwuVe8YI+S9WRVVsJWzWZexzSCN62BkzYwMXAVVOBt5Fa7V6BuhCDVpPlX/soGgM+rf63bKhwPjaSobohtjisnoChvkkPggu1kQejPrtesA3v16D+uf600ZfZHFymYb44xEG9kwv+tmWh7rMBsNlcvic+wpMIIbJN7b7q1VtUymS00ZDhuqG0obv+o2G7IbHUtaFCxVUhujXiYbshu8S7YgW1URwDJL0RvHVawbeQnxG3QIJBuC/BvrecoUGzsZFIQJGyYd2NkjTnTVX/rrRMkbthsYGxUs6IQpG7kbsBWtvPdViRsaGoEbsRsXjNUbxBtOG4JZmnqqG4LAW0tWkX5YtRviWgPrPRt6CLQI/7IdG9hZb5ESBIauCNTsWj08KBs22cecBVU9GyFpHBtmG4wVABCWG27rSdkrG/nrDFUZYrTUYdVBG1RMvhuRG91iXRs58FIbUysdnuwY+1XCk0PrAE1mAQ2g41VSzQ6EdxuKgQ8bFJ5PG1XwSk2dCKrwQ+vP0XXVVtU1i8TNep5vG2Kwyvg5hNRWSNAdwPUb93B/UtRaKtWans4Shjywm5Smz+FKTiaEICQQPSCbboTtoJFpLxsu8BfrLm5rVfjkV1Qs8o7VSJv6GMSbLFVfG7DVN+DZVUTwKEZ1TVII0XBMS9FabRvuDhIDZLI4mzjO7VLRwnHYlJvkYkc2RYQWor5p5o0P8IybD/z4JPdVoptAyj4FdyYN6mElF4UH8DKbUVTmhufiwbqKm4nAqoZkLSzWzBr6I1c83l5am7xNTqkqm+XQ+UbfLLIGRptKsG8+BpvOBkabWGw4kOqb1puKjcjQ9aCgWOhKjI1Om8rNyptum//YnkAWvDNlB9DeEQRNRNoktixsSHD2my68Hkh7PFrQl+oyBv990P6TkVBYFbw2mwLQ8/Qgqa6QVQFKBFuYtbxZQKbQt/bSWBg6PMLD0L8RgE1WBvyIziYOkcWbmrxSOqrApnVtoMq8AyCmjQLQVMifmOfEupGy0OfYPbzb5XDGBjgum/KbV9Dh9j6bDptxmzM4LE3OBsdAcMZxkNZ2gkatm8BsspvI2smNVmFSgPVjlZvosNWbCkiCzQMGb00zm0qbQqkFm7LQE5v5Yyoj/4A5m8ObIVlOOuRNUZvV6jGbvZujZkKa4YOrk9RgXVI/6jNj15tDegmtPC0amTabXqR2m4MZSF6vcl6knajAGh+bjI3/m6XqXqOAJIiNRayLmwtjL5sSpBQ43aOdm0N6qOS2jdOjrZsSpOKouyM8OqaNaFtj6ko4gYhWQGhb0+pcOFQg+Fvw5C6MVDilm6bAkFtqTdoZTjZbQCms6+MvI5yUjQhz3Jfq5FtvTRKktji5I8RbBEAcW86bYjh4WzxbM4TRjR8j54gcwBxbTho5Y6hbqvCBjS44CFv0WxwtRjjgW9JgVFsUVD1G5pvrJCfqAKNMW3RbatycVLJb6lvh3FrgNFu+TSTBdqAfI8+AWtpnrDhbsltjm0N6LqVkW/pbwFtdLJQailufm9B0/Bo2W+FNGlvljShb2813JJxw6Dg51sxbpWTVTY5bEFshWxOYh2PFsDxb/Czvmy8ZFFtDegOYXY3GW8FbYg49mC8ZtFszJix0LlvaGQlb60m6lRqjY+WFQPlb+I1hW6qbFIsKWBlbJls0mMlbVVtzkL16Y1JL7Lyjn5uNW8WbRBkWW5RbNAnfLD1GtlvR/U+brlvAWzVbwaPXm716qfEjm2pbg1snm4Vb2lswYP966+OFW0pb0PobPN7N99hpm7JAc1uBm2oAi2VY4Dww/6j7IKtbkBLrW2NbAVkygJ+bx1uFW9tbzkB3etqbVDiZW8cm/aiAmQt9EFvcZFabHmPRW/dbAVuMW3lbajxGW3VbdFv8MA5bf1szJg61qlvs4uxbf4Q5Wx5jWkjFWxDbuBxlW1Xwjg7pW0FbnNCI20mYzGumgXEogNujXCN4IZsjUuMjnP6tOLHEZlsuODNbWGwPW0yjpNvDerWb0FsoID4o+W4uMOlb2JDhTWluhFsDW9D++sChWxNbCpvlBk1bilu9W+3YBC10o6hbOvaZm0QZolvA2z/xottP3XGNVNuC21Fb7h7DepegNmPdPATlHNuRW0DbWGx426djd1vYxmagqxkq2x6RpGwpm2zbV9C32GA4I1tG2ztNh2PQ23DGFTCg20VbVfBrm6pbT1t9mwwE9tuLWyp65Nsm23DGVFjSWD1bzNsZm5+Y/EaznkhYVtti2/ObyZth29LbbQiB2/KZ3FvRetTbbFsE5SUk3VvI22nQqHa/W2nbIWys27lbm5v3+IDbB11tCCiVSNuv/nGNSfB627aZ4tvmbCQaAWNDRN56Wtt828zbGdsKYy+budA3W/DbKnq+2/qYLturbO2bYFu2W/SEper+o4Y6WtqD22AMXDge232C26DPmwhbteQn6i3bi1uj5IubMmNJmy32wIz+o7PbCS4azXEjHVvn8NPqImM2291sJBqnYwlb4HrL27dbvk1z22LNF9uT/pzWRs252wTlJVK0Yw7bG4LOmxJjXUiznlvby8332Pkgcyj1gl3bjhmXWxOV09v2ONmbhsoAO97bsu61mwZjSZukW/nNQFvQ/ugK14AWY4dbewjfm5SZQDsk0LqV+KPmIMCsWDsrWxrbDNCzm/LbbQhIO/VjUNuam3A7uwGv2AJbUDtArPKZ0iCCDtxVettgW0mbBzgbzdbbmpv2W/A78Vubm3XMdGA325zQmZzlzYI7IFXQO0nbhtvsOz42nltQCP6Y29tc21fQwjtzzfDbWYTiOzI7jYRNmwFju9tDhJo76Zm6iElAvYRqO34Ziui03Uo7N0k/2yubLrByO9/bfhmWOxa6DNsiIA1jH9tKbHU48js92wdl+9uio+abweGeO+o7i6mT8DPbbDtFm+zaCjvdqRFQT81+O03+8/TD23XbEf6l6mBjVdtN/vE7uFsZoOQIBwugLSQ7aTuS274gD9s23cE7lJmk2wPKATuiOx478jtg27qQZxtOQmqb7KAnmZ+bsNs1OxnJ6lv1O1IpupvGm9Uk3VuOkNHN+W5e27U7XpvtO4CZ78COm5ab3VsgXuzboZsNO6M7wbrumwmbYYCL29M7oFiDO2M77ZADm44p0LD+m1NbLsnBm7abxDvNyRGbTDgXmys7izuu292bDZhHO3DGfdtDyag7bZtNm+EpmDu5m3IpGQl4O+WbMClW2JubzzuiKVWbnGxd2+TaXwUNm7Hb7FnE4CHbFSiVWwD+UAjxm+JZrdv9m+5LsztJm8yRm1ugu+Ob2DsAu6bgQLvoO8i7iTtO2+Q7034uwAub65teKafbARzbm44pu5vLdUi7Hcl3Oxs75LtXOwc70LtnO2bLpmVY9nYtXSDZ+TUgdi1gmwbMrsyRSAws97rUbongii0cg42y95xSUVqs36CbbfyYBTTp4JVEQTVlia+E/i22wNK7a+Oi7CK7g3Cj+YogWqwk4AkwHSVLUVqsYaAOLb9UIEgpeJxJZYk5vFqszLv0Ze9ppi0jrPMlMhRyu1Wg6biRIKqsE0AGwl4IeS1WuyDMYISSu2Ud2sIV8MS94i2jfNqNPrsJLTcJertohM8kIsmauy67MyjfGO6wqrveII67kkClLdvjSrtHJGFo14lqu0ckKrvGu9q7KbsKux0lXGh3JG1oZYnX8OctCbu6Lfq7EMapu33CobtjrTElgbu2wf6s1rveYB8tZrtpu2RIr8HCsihuCyyLLR27NpAIGN6sXrv0ZWbo2y0Nu7r5rLv7LY+LtlzZuwLI3nJDu+ctWvgWzHy7ay0igz75Xbu4SMAd6qTQGJ8k67u9JU27dcE7oHu4dbuT3PO7M4kSuz2sF+v5NDHiZa21u0GcnMFuu7G7gtGTLUHe8WGdYt9aq4myu5Ior7sDiQoU5y0tu8a7+btdLGUlY7s1uw8k5bsAree7ebvHrYNoiruJPG+tzSU2uwytpbuqu0oInWLbu/e7Amywewe7N7sQrce7zYmXuyTBYhsOlVtRiqREZHsFRHsprJ5LDpXws8R7c8RkjsKtd7tlibu7bG04IIOQh7sWreB7HrsWrSPky/kPu+2kUHsU+O7RPaR8exa7T+AYVJ94BRRse95yoHvOrcx7Y5BSewqt3ht/u+fcYqA2BpG7wa0swEZKqnvhrUBw+Mxyewim2nvUblUIeaRPG727QHvRrWBkOmtrPkQoQcCsrB8pFHiQ2HMojtyBpdRuEiiwbdz6s3iBJa57+GaJKvZ7aG0HOP8lzns4Gb2tHHzntMPyaKQJsNRuVAy1cQPcF7zKzGEYf3HRe9SaBEIt+Yys4XsEQnMJ2KSq4pL59QmB3P57BEJs4MPBmXCS+fl72KRSsFl7xNJnrGQiJnsjIDRtNtO3EMn5DTyue/keRXsBLMetw/ome5at563XqBp8X3gO4Det3Xgcu/EA8XuEpDmSX3ijCTeta/wRe8rgX61Q+NaNLaWWFjStTnv3gtJI2G3mwD+y57RLCe2scXDOez5ISG3q2ZItHntIbTumFKQ+ezZ7ONtgwVZ7IG3h3Lyu94I7e+fcwZx9pAd759zw+E5Ky4gtezHcgK7Ne/htRLAB+WrYg63EZrKSD3jJe+/cqXsPePkg66QHpNd4EutlUPHgL6w/ZL8JmG4SYIltfvjdk0+smWYhbcj7OsYMVej7Z4qJE2GVdMlY+0j7Z4o7pJLiiPtz3Dj7yYvRbez6JMYY+xTJaPuXpIXEK5MEhkBsGSS9oq9QzFBobKYIktDcXEjGQxy/uNz7aGz/cPnQ8iKSYdPLkuEPouh076I200vuf0ZSUF287NTUeGayCeJh+g1htnQvuPz7LWGc+8JQT5xxYWgLktBGnEeiHFwroq/tWXpLder7q2yC+w6iNiL9brdy6X0c3G3uivvTUKCljfBNuL7oRWyxQUDQrvtTO+77Wbhm+1Pu78sF4h9dVzQL0ML7YYNQlR2eK6qfuDFUtH6mdYj1VX0+2oWbdIyJxKDKln6mdaL1yfuvzqZ1HNBSUDI4TH7Z7gKJmov5wALQlPUCJibA0rAsruB5Ycq5oQLQJfWKUHl4DYNF+zm6mXg9tXn7XPsaoOgumfuC9UTIS7Wp+7X1A6kp+zuqSftzYhn7a66jbl37OC58eH8iKXi8k7nQVRx9AXjAbjh1uAH1c/sp+xXw/bpd+A71CdCx9Q491NRvgiFIsqJ1++kudbhPHAImvMCe9Yv7cvWV+4p+5/uj+42BnzNH+4iJUfs4Q3W4TvVx+05AeWHmkD7u6fsL+1+5rfvRGBn7e6DM9XpZufufNqCw/G47EFdr1HhD9X37//u7tmzQ0Aff+3yDbqLdkYb1SfAl9dn7r1SH+/Curfv82rv7QxARiev7a6HUeGj1Lj31++CuUbieGB+D1Hi99QIm7UCvqFQHD/u3+27uZAc40I/7S9ALSPqJOfu03YcV+AeVaDAH1ArCUF/78dDfwAa6nAd5YX6D+mysBxBR0kM0MMtYIiagVvdsosZD4Sj7RgAF8Dv1AbhHbOOgcgfLZlfD+INa0GoHJ2ASxpoHT2xYEMoHNDCKB+oHLUayB8YHixYO6/81MJWJSg6EBYg90XNKLSwScG0VL0pTDjRVrzw7Sp4HTuwHSiPw0luBnAxda+Wf2ONT3lnG7I3cfGCrFd32Mv5itTx0Hgc1Chcg0QetBLEHbgeT02/Yzx4VKJXTUw1dYIVzSQQuB3qe6rDK+g4HyP5eB1bIvxt7tudKtzi//nEH1Wr0yLM2c3L+pKXTg0qecjpWKxEJB62S1ezt5nMabQdEoGVKdtWMoBZ7Pn3y6Rzxmp6NxsCERyjj/n42gY4j2mdxXWCVwV3FPbBCnicQH9FNikYBpdxdnLkLyweVjpsHtijinhy0IyhXUfTxhM5yLb7seHBKnicHDXFN7BWwxv4HB2qggUq9oHqeXp4j7G18ANWNBHgQiJWQoLaeHMof0QhUcwcCYOwkXwQRUG8Hbr0UlQByapVjB8M6L3QFiN8Hdh4zB1Fp/wcN+UQT0IdLB68boc5fBF8Hfp7ohxQsjwevG8gmXZz1mifj93Aj5r7sg0rinogFdQem4oiH9p5MlemgqIfYfIfFA1wuoHD+vGy0LC5CHp6PfoCHVd288OKeGUo67D84uPE9voEtEKBEOHg8nHzSweUEnagymJx8s460LMakMvGchzzsjfK8noexPdFZMN8HFiBWLAiHGod0JRMHkfTBnjsHADGFMAqH4aS3LUWcpggz/hxs5QSihxz+m/mw0/9wPv52h9yHjG2Q8FaHaJVC/cGe/c5Ah8yHBodnxjk8mIfBng/FUPsH6AK64prOmJiEE5iVnk3xpgchhyOs8Z4sdqmVxVDxh9KzViXSB7GHkYcu8AmHnsZxh1GH4Ye5i76VOYeZhx/DB+yFh9AiCYclE3YHBAbFFSBBKX4V3KLY/4EOhFKoG+A3HjKULSyqqMwo8VwNh1MOUqgDEbwUXrJwyNma+DEXDJ4bZUwpDSNtezgR5U2HbRVwiOBogYd33PWHNYcI8HcWdQczh/QbGu5jQBKspUuynndCXBy7QUP+S6iYyNWHcdgK7mbIR4cRNe2HkzHTQcGeJSzkmqdwGp7e5OYcExTw7J5ynzBXffsMS4E7BhUkKE60vIuHyKxYHJjcXYefhygcnNGARzkwN4dDB4fOUOCIHFMHiUATmqPsNTtdYF/sMh62suNBgf69FPTYxqy4/jxVjR5LqAhHWdAd4AoggUTLB579hEfWYOwVI2CryH9Yy2D0lWTO4XgrNAd4LMBuhNDQ187YHC+MGp5JXJRHhGDSwE8HJEfYHNacIIcKBD4eo6OoRzjO2EcKID6a3wfk4AgoUez8R3qen1jxjlyBDVhD/rBHxhwoR7CHoMDIR62C3wefgKskQdGyBNpH7CCYyMJHBkfPfTTy3Ef0/gRHrEderM6eX+25IGJIYZTOnqbwRBMYRyJHD8bBKOTy+kcRnndVekeYR5Dw/1WNHhJHLf7+R+JHNRpw/pZAidHq2XbwyP6llVqq9kf4E7swd1XBh3lQceiCjj3gCiow6CmeJVExh5kc4sPkjllHoIr9TKlHHHIU+5GLf5ApR1GHP1GOxrlHmUeVR/mH3mTx4Ikcu3C1R42eDUd5R81HtgeP9YdUNxQHGG8do/0ByTlRpfO8pGT6i+qnXhKc4XhN8qOjwnwn/Yeea7AdvDoYAQWRlCLZkEjf/TNHoVjWJtOc5i3kOM8MDhSDnrida0fDNHee8xyj7BJEl56rRwNHO0dXnila20fP/av9LBrX2KXzAP6AGd1kFAMvS0Qoy0eesAZe6xkM61JdF/32GxJQWAO7R00ZRuw1KOADTRlm+lSwRAOH4ipWifNSA1fo/zgvR7+L10fZXoJe6N7Qx26dteBt5eDHAp19R7desthCfV7EM+oDZCngvLA8A2fY5JhBAzjHxSz/R9jHGMc+G4dYyl1jfd9eQkRAOAjH7hu8ED/o5p3IAzdRDDhcXUoD14vEx9he1XNbR/DHXSYBXsLHpfODO50c6fiVs/YDUBlla00qlAPr6d9HnoiwxwxjHMeKA5BLD+DBOCrHcgPZaboeKseqA1AalR4BiJ9Hu4six4sFP+nnR8sqnf3tXmjHXybmA2lphmoPJj/AM+rAx4yIXl4o/ETHyyoex9YbJdldC6THDXrqxwTiYseUIyzH7fMjXsUs9Me5nbLHHmnsx1gDYgN4/OTHr16qx17HOsffS+LHnl4gA5ciSMdGAyxekccxHpedYsceUaXzEV53nd1Hszj1sDHHK+Vi8CAszgMQR4P6vtDwOjkDcFgcXBlKNQNbyClBjceyIIVeZMsbwd3HD8a9x0CK/ccsEYAZmIx0jPEDGuT2cAHqf50Rx0GUUfIxFP1e89pJA8Rd3gMw6XOwJlQzx5QYGIKF4BPHA9rM4pxU3ia/A4bJbcfhAzAQvDi6izoUa17nx03HnrCPXvnJ6PTDx30Dglm1IL0De15IFQIAP0croG9ZweCeVJ6wrblyGm700wN3x9r8VUBYA/jekERdx59eEN6Phn+cWbP/XrTpSry4HEoUGwNzyYgn+p01Tm/aSt73+HScgt6u6tgnMYsMg7j7LHXGuGIYOCd6y6uw+Cc0g9lHkjg4JwreVkyDYAQneINph3OIpCeMJ/QnUqhUJyAjjusxXOqExL2gLGt1lascKGWa6Mi2bheQ5BC58c0gwLriJ29kkifJq81AJWR7IEngaRAB8o1r2CCj6JJ4NjPavQMgzqJ7mrdkZrzNRdInmQICJ6iCd30hnDa8THFn4Cws+dbzRQio+8qdINNFLSjf8TAg40V47QURCQgdZsMRygLg1mpOxQZ38YAkDWamJxIYzBQNtIoUIic808pQTWSyJ186G22Na8EndaCTyN/x6pyeokIn+8reJ2tO2igsLDGcfFMZJ8lrL8AwU/SCsJPr6GRuFaAJJ7PMpuDzRTEn38rmJ0NcuieQENW8fFEqYDInxiexIgQoJgn6J9O0dyiWsHSSjK5sEIEnM2TlJ8eOwyhVzPYnl0WeJ3FreSc7qLYnzZGxdXuOQycsLGknioJ9J76cZMWdJxwqcSe7XK0nEhhRJ8KCLCzbJ5mOpScALBQAlBBqKPvKSSeUEDkndusYbhodMb3hnBCuCXBO3PQUolx5RTsRJ2sjJ21xJydlJzSujXHhFN0nSUWNJ0YnoicHODcn7SdFzA8nZidRJwGCHyelkTMnGuCGJ2EnSUp+ERlrQZxdFaaYpRTZ4SzDy0txtbCJHDNVtMMEg2R3ZLaO4UXBWIDksqgC/WY9ZQJXO35rgWzOCUDqqILP3KIqbUBCU5vUyCpu8M1AJmYnvQLIQ8gmZnNIlgkJ4ElORSH4pw1idQ01ZmoUrfPNDWNMoUjJCQWIl7T+hBIJpKehqCtYOhh/lHhwalOJAKKnyXFYxaRu5CqoO2yCiXwUAuRN3nB6p2XkmqevEDCwsc7ZQHFFlmubCd1zre6j3mIxlgmrzaER8/zIKpSni6hhM6IqOqcJcOS9+qeEp4A0Q9o0p76noBT4Kl6uFqcJcPK8ZifVNWqCgCR2AkeYuw01nhWgTmAbnDYikSzHnJoqyad1R0f4FXxBABEC9oAk5lmnaafMUNlHO1THeQWM8wK6JdWo2afQdEWn+7Qlp1WnRKj5p0mnIFiM+2w9QOiAdKec4HRuiEciUpgJQGFFbaemlczkNKKOksNgA6e+5Zp+oKBPUtugZ3DzLHFmZAwufvFC27LoaMw6BEIHxJ2n0+jEXCpxi6dMqpLidM71on0iInQ7p7HyUOiS4saMq6eOkkokPPp9p+e0dc5uiJ8iO7Q5zmdDBHLrp2HjZGgeOuOQrnEs8mJ86sD4xVXjl6exlNiiXadfp73EZvKOkh22S0ssbitL8bWp/Fh4sXHwXEkGMyJxoSJ0s9BtNdDxw9MatU5SMCA4lVAc0EUXhV6SI5pYck/VxXHmdPvQ4ojAmOuakPj/VQqixOBb4xFRQjPyUBjx5GdxFMM12n7isk71WbV8yuKyxGd5tYNxw9OaJCRnCPGYZ3eJ2GfjIBKVz/hhMuXs3GeS4khnetzdmPKy31Vnx7QUAvFQRztgU9WKZ5Uu2s0qZwJnwtVv1cJn8rJaZ5A1nNouhqpchXFUZGiQnJVA2eBFwfCsVqayzAYWlBjAUwRBsklo4zkYZyJneRZnUqc9uGeIwFdSVLR54Oiy6mozIvuYvdRgBNvTRrnHUv6VO8IvRG2S1KDUJyNMYWcUdahhWnScEqAwzCcRZ2y4UWfk0j5YqWdS4NFnGWcO8GlnuJwxZ0UTiWd3m0z7rJxBlAWyoymajMVQrh4iSqS6e0BJHtIye7Q1WK+ybC7d6NOnXh5zHOAlYnw3SHMEv+MCwLjsAfykupUgpzoDZ9g0SkDyHj1nJjQIR5ukgvpSdtVnDmxAvFVnCKzG2Je0/Owt5f1Yp8VjZ8EeOweW4yDAzR7CMlToZWd7Z9sYqMRNZ/7s9R4b43VnDLWGbIS6mqxNR6McnWdzDm9QyCV9Z9QVrDInZ70gpzqpnu9nm2fCDh1n7dQIR8vLnBO7Zy0s12cmNI6sCjXRPZNn6yzbZ7Y03ayctfaQxkXg5wlHwozA53D+9WVHyBaskP5mJEfIrokg/q1n6UVT8LzYoZIr+FVxX35/Z8Soj4lk5zNnH2ejNXglwDQ/Z3jnQCVq4FjnbeizZxE1L1iNZ4tnvP7CbP9n4/4m/EIlDOe8jqfFQ2ejNTDn4fiU56cwuRo7yJdnnf6yh0fjACCE5wEAHHws/aM6FI6nxeugDOxkTaLoh2fnh4YESiie8SIE2Oft1EjnL8lQh6CgTKq2vlLn7kW1SQm+Vuft+AhH5T78NKjnptWQ58bnBbL5Phvj9puSBOwk2yiC56bnYX3uNBlJP/A854HnXWe+Qn2s7fhI5+HnUjQ657CeIJqx5/4IPueVO0xOZALehE9n1tPmUcIO92cvtEjnSY2j1BvZe2cPxbRox8iqNa7nilHautLw4KWKgiiJ8OdU6NWo2QY4Dn8clBC3Z43nGehhcL2yQMh2547kQ7JAyFXn3nCY5xDncWYX0AWy52fvq5ise2ep3KPU7yTKOtXLxOf2cqM6juSa6DnnBbJE57DoBecRNUlYKxHr59znJWZI56MeV6shiWNgZeespB3n7UXK579MxZJ5k15xFRAm50CK0fjD5wUa82dtcaTnpx7H54PY/uwe5++rIGxzcpPnJSgtHl1n/udrqJ8wKXJP54qCxPEVGuscwhDJsoAXUhAO58+W+efiKAUaRedSELfncuewF7wEm8WA8UtsJAjZ3D4Q8ac44DyO1CS/+CZgdfSRxhmn42pQhCocxYcOJSQXktw0VtkTePvL+EoYso7UyQvsBBekF/zJZYvMJ7UVPI4i3ESozBfqjmQXZuuMF2OcNUQ7MHwXJOYCF93KKYfCddzpXdWEMjXT6Hid0BwahDLQVbwI6Qt2OcKKsX0UInQ15rC9qaDuMqy9tc1s+Ed36lRkCeDvbgN5VhpUZOYK0u4vHNz8eqI6aWHQtqISiMwI1278cLysJKJW5J7QYmC4Gmby7YyxuXowVhff2hB8se6k6KYXvuX6F+8khhf28pEX1HJh8mqUXP228Om8g4X+w6vQOvyHNb72VNA1yM4XehfaF1qI9BovRL8aqeLD8GjyU2xgEnPzTlK1bPpsXbwpIxrcChC6UM7r2eqEy8zptakaF+MiEF2y+zGITTUlXI4XzeBOvBryJGnFF9Ian7UAab2EZZa/ta4XSheWF5RnXFF94nYXURHLlEuOZYTRGKciEGQCaVkXKxdOUk04uyhDhN22BPIJF4F6DBA1rHzysRdhF/+Fo/qxfToipyMKUrSawtCNFx6RhRf6F3OSHhcxF5cX8eTOFxEXpX1iJI/VwRdc/ZDowxc0ov4XVX0NhHU15+FO5LhQnPi1Fy4X76m3bG0XDhcO3LCXyRfWF9Fpk6lQlzAGyCjB4RUXRhcuUP8Xk9W5F15u8zJFC1oXVFDPFzpANEQXF/3qGtBNNfiXVX3Z0OTg5JdFF/JuCPz6iBSXCKKEl/qIflFJffkXmohvOAbc/G57F1yi3NM4lwVu9JevF/3qx04OBJ8XCv1UlxbcrJdT6jWsvYWMl7wUPiMnF1b9QhTXF0MiSOm9WccXmpem3EeZSqzeUpMXev2zVXxnaWxG/U/kk9U9F3la6pd0NRNJloRVIndQYfJVF879bvCWl5kXK4Yml8bcRRf6l4/VNJfdsMuwnBhE0rQaEpd8Z86X8GzpiAvqjxdW/dLMAJc0lz1ePiMMl72pZMc6l1KXXSKBF5RnnJcfjCd4LxdglxZaNxTfI4KXB6ldIhGXSlRxl6iO0RdxlzaMztaJl9GX8xf7F96XxdC+F4CXUFoNblhEe2Hgl9GuIZeFl0uOXBjVl3CiqRejGI6XnzUHF0BMOeQGNaoX8FrfF/BEy0n2l/PuQRcZ7NHcNjibFxrcNhcAJnRgT15Rl4JaIpeBl+6XpYI0Ghrc5hdbl9iIBBpA0cRaJeQe/EWwEYTJqJKUVQiaiJmXXcau1SyXtxdoJvuXYpdOWgGX2PLel1p2BRe/FzLALvwGl82XIyJjl7DyhZGa/cXwAJenl+Wo4Fdul6mIyCjQWtEXQZdEJuyXXpdJl9+X+Fisl6TpNhqKl0mXNNj9vKqXW8ZOiGIgIxd6WqGUztaGl++pJZ0ql7qXKFrt5F2ghvJI6RUYDFzkV+hOiNTMl8RXZqi4VxfVVpe/LkTu45d2l9aovFcgV2GX43x4VxOXYloIugBXcZensExXm5dEJtXQdFdiV0QmJZf6Z4oXSlePl8nngkGbvDsXgERIlycZXP0odP0XZyk5fZ6BdhgDqTPptanOJF7YIhnR3IASTTiLmPWaNlcMDrga2Ito4CSXDWJWFy3Yxle7y5aLl3bsoohDClet+H2cilBEDkhAeTljU9PQIVethSF8odD+VxLYx9qBekJUORcPKm8XWMBWF/xpbxfsieo1Lwr6VyZXdoO6kDFXvEnpNWV2xNDgRFCXgVcaaS7hy5TEi75XblcESZLqt9QJ4smBplfJV25XmVdOiycWKVd7OFfJ59r9uPm4ClfxV8LQt8tAWC1XVX0YiZhBrldVfW1XRDUhF1V9TVcYQwQCvVe7ULoXPwpffZ24dTVDGUsXa1eS6h6k6E59AfZWi5QMyvoXQ4GhV6lBR1eFVylQNRUe+DzA8Qh4MxFOZjgTWKiOH6C/4x4ELFWv1Hurdvh82MjYDDPlzGihxvId1AL4v20oVaGI9s5PoKaYI+vA1xI17xB7WIM6/1eV+KsEGp6UIOx8t6BTiJZpGw3dqzAecdiPV75a9xDXV+oIt1dKJ9welmmmts0E91T4vA8gxqB4YKxMUevzLJ6gcNdg1/WpB9SokYDXLezRNGiQJjS1WN4VduRCwB9XItjWqhTXtjTJ2McgVUDNBPdXmNcmGkYoHwK02CXsGkBM14TX+exc13DX58hx2JSqbNf3EEHAJezwKM8C8NfigTLXyNe419LXZaH/OvrXotgy14rXxtdR7OcWRtcTWOzTBjWr1ObXNtfX4/ZnmkrR6m+E7dRSwCkwBdOgtdmQvlihHGjXyDSqgjEzzjSXtCy4MTxB175FiMBhMyPp5xY5q/o8/prR12rX0jy4jEjX7avG13E6QVaU10rXLumxvATXKNdx6Qdm6NfCymkSYdeQNHZAtzLmh6b8+C6Sp9LtZmCzqyHX2TxqUE9XPfip1w3X2NdXVwo81weXJPXHFxEhSJSJvVhONi08INS62NaQrddUsSJHAOCYjYQ0XDqTEtXMXtczwhNLk1ijcYQ0ohPzWHbw1+NlgAFZdWhaSGE0cG40R/JOc9WWPA6Yvthltkfje8Yanr1AphprxaOJK9eojBjnh8sp2IvX88Nj1zPXULVYbhae49cRBpr4JzhO2MPXYBMTahyH9970l4/Xb9cBPO9XSIKyiTLYMEC/1wqwgoerOtz81DQ6ViL6cR6ENQfXBElwgVL8ljzOmKYTTgHJLOeRNG5qlBA3D6S/4xhGutg0eCPXlOQOPAs6ODfbKIPXaDdCJchGwDc6bMg31yhT11FYtNjX4zQ3JZqRe5fFvdcHWH0FxkWmmtPX00HXkQI3gxLPgLg30DeINziJkjydsDA3jMGz11MmkqyDEvyIgTQ7EGvIgxKclNF9FTC71yRdkNfXKF46uthn7bg3SPQUN7vK0Y2ENMqVSjcT17fF4DfgMkNEAvij18A31IJhNBw3NxqOYNw3JjdBaMhshKzxp6qMNLxJlLmnuiW+Nzy8t63Vp2Ge9I5+pM2iCox+NxE31adBN6QXITdXRswa8TcP1KE3kBPBNyk3iTckjLKOCTe5bdwnnDPhoQlo+mnPZDBIMKnNKrtkJL7IOgjU3BTmaNCMXIqNCZipv6Eo9JA6jTfqhqE6Mql8GtRUBTcgqWh+lAm4THG8XdpFGIyb2jL7DGrU2lRmpf7qHikzRL9aY4xFZHYGz753OEdEcptlN9U3oalTvuU3VWi/2hvowAoA8SypsH5JKThKv9ozN4KKyqVlN6qK7ylxqmLUJL6bN5iKGN4nN/uMbYycSd0GZTclKvoyRTdcAujEebyBdLn8I96yBh+02FxTN7W8X4z7/KgDkYYTKsC3DjEjN8ALALfXNzxUXTfTN/vzd7RLN9OMEcjoZSGa7IN95UnJLwD7830iuzeDjOWYk2GZvPIa+Au3NwzyXrwCovRclPDtN0dE9FyPN7daYLcot5UEGDoBvrn8HzdCqcy3NtPchbU375wAt5U31Asb6BpoE3oi7vOIILfA2tOMHngQt/M3qykqoiCpZGrSCyWhjSV+KlFBGhK+mwkqUYoit4qGBTdd14dUNUZUqRAYGRHgXLPasJD9DTszLWh6t3Ypo/Ge6BE4+reCuQnZVrde2CB+5LGByGynNtQUbmu8yO3Et6axs9qaIHcoaFwuKmu8MlB1DS63WrEAmBvDNtT/tIa3deSIXOP45Ogxo90NJrcyaLG3V8mbpLwyEaYqwy2Y+NQN2vWghkEZ0I5odrcyVJ7IdYp5ty0pmcWZt8nDLSlurm630V6d85weHmh43T63harBt067DnLlt463L9aGwwwOHDJmt/m3RrFdt0lH1ph7ZvO89Bevitna12b0F0Qn+/UffI4Ii2a+LNX04LijtzIXHEPK6+Dipa2g5kO3ErMjt6DmHpYMF8QnD4obt2u8W7f8s4WR12ZbtxWHnUf5bcEcFTrGsk8xOmD4ZVys7NLzaHrJRqvOIMUuYFh3t8cgL7fqHLixcmH7yQKrT7F1GD+3XisxaPbJn7fy0sXhpSnb4onRYzCFpS6r1SAVhPbJ/+zUahlol7evK3NMivwVpT3Q8QqWidE6PqshCHZRNFgZSdEwYmGTmGXLdzBgd/vJlfZVy1WI1wYgd1YEQ9QKyb+3zrFKhEHJT7eekpmlNHdVMD64+8kQd9EK3NAg45B2ljC8iefJ8UhD3swcMKWT0CyMWjBkdwrJFHcOnoLQT6WNaIWSChyryaqM8wpUd8p3MHfaCiXQjFi5K5yIDvippZnLXOz/t/p38QqCd7XJCHeLMeiIGzcYdwi0oKvyOp7x/rGjTK+3Ugra0LkpUdAr7dJJA7zsd4R9RCksd7Z3DZiWicKhvHeYKQx3KaEh0Le3GxPOaPSpV7ckfI1YRjoj4ubOEtCd2OZYurSkfep3jyvaoau4mZin4rMTiXdCZWoyMXeG0DkGBHdjYAtMNFiUK8cKYXe1OsmJgX4yzKUpIXdNR/yCP7c6q4BUVgoKyZaruJviJArJKqvNMPjknXcqd2vLQXfQWJWUc8uNd9Y6uStCZsMIxndHy/F4yGUodxIgk9QcZdSJe8sud0N3MiKxdw4p/XcFeKzVnnc6eJYwpwzKkG13DKzgyKV37HfOKhs3AXcPE7V3AHdbK/PQGSksd09Iy6hTd0/LD3fxKdF3Kc7AgmpYVyu3d5+YyXd3KxqJ/Aifd7PS33fcZYyrwPdVmHErli6ld9Z3c0w/ZOcGF3cxznYyUXceqx4uB3fmd83OuXdZdwZ3Acx0d9D39c4ug2N3gSLcXLylI9C4q+vHEZnw90XOV3dPd/grGPfRBvZ3QJLHk053TOIzd4+33HdqQLKC9Hc6qx94rinw93JAtPf0d1ysGlfdNE10W/pc52M0nHfkfKjnnh1kd/O8qOf5vjL34Dg1TJBTOWihh4B8G6A5aIr3gHw55hpomvfKoTfQ/2bIKx/C2jJjBCl3JYZLQvnKzQpm97DClcqjE6nMzUKphXr33IUy5b8Kyd3n+hV2nwp8XCr3f8aHTE9dD7xy9+oO2jK691vL3Bhut+N3guB72jLn70gxzHVCDvc8In4subcZqhcTC9oQwqNcyCIUtCn3NOfzd9h2c0JFBAM0vKT9aL9cmiJD1LL3aytHlTdCqvd4yF/Mm2iF93i0QAabZ/S7yV4LsloEylJSvU0s1dCgji33MXyxFXO6yjRoDS/pL5hLkjNyrfdoFT33Z5L1QDyZv0hv8gUkrfdOyaTo5Fx99zw4g2ppBGP3BSC8GgRQ+LLITBcxa/dNBDZSSH1OycxQL5wflCYxs/d/BI2+YL1e8Z9YjHR/lCWxchqj9484fqByOLUww5y79yl25Jka0LEwrlK7vdv3oArlJHB998fJsJYEBSSr9/I4iclj9zP3phhz90RSsQw8OFWIb4i/cACkjOlpLJT+Zzic2roJoeVzOJB8sJZ/LDFQmzjgRM8x2NiQD2eS02Dz4P3GO/frjX/3ZvzpiLhciyTCFGb8o7XUUjeuYbw6HE9qL/dhVKtoHQRnkg/32FkWsD/31/dEmU338/cdQ/wPMEjM/is4gyBXyYqYtGJn9zf3ERigD4847UAymRyUg6JgNPSQPDjUiMoPjziUQDniXJ2Toiv3WWlOcoAPC/frdHIP0/dd98kYsth1U0YPRXToD7JS0A/IKfDogFJ2D+gpHbxn1MvDq9wwNGmBKFJovfLYAA/rFSBU9zFL8iwP8g/n9yNk2FDc8LR8ojAjZC4P8A/eo2FULqL5AR6lG73FCaxgMQ8U4GeZlKY+IL3UVg+E5Jf3cLgID4KIamopD2eSeMD1VNU3TIEfOPh1cKwiDxjw0eBJD84RRQ/391C9OQ9FYHkP+chyOBkPgAHHviEPszdSD8EPMg9Y5LdqnA/iD6037fenOBEPPrwLRJPyiQ+JFKYp0Q9nkibA1jjaVBoPZzizPZr0Dg9QD+P3hMM47LpSTg8Iwj33WQ9OD9s3RIhI8NkPlzfSSFAPCg8k6YKK8AGd99q8WkjBAcpS3r1JKccPUA9RVj+YzZxviLaSbg+mvG2WSPAm1C/p1w8nD9v0c+JzigkPfA8DKcWwYI+HDxeKgw+ND5EPLZijD0MPx/cst54PfQ+P2LHIH/fgj9W3JeWH920P1/MQyMGZHqV79w83NQRgD2YPVgKZD9IPj9jPbKiPXQ8lsQJc/2Wd1LsP84jbD733GL3aD+K3eARAD1lp6oCIj5MN4A80j8gKpg9kSEL3h1QiJOUPx2gwD1/+Qo+Sj68pqMXzMBv54A+uXgqPso/oyxnsDw9tXS/pJ3w+SFYTd4lqD/KPxuN6j904y5Rcjxvwc3yu2OsPvFwyEKfYjpDLD3g2Dry2j3fY/Jh4EI/Yj5Cwj4P5TQ8ZdE80/XxRfZ4JmVYjfHUP2o8aj/Q56Q/5hRtqzo/dD9024Y+ajyg4j3QtDxF8wA/RoHZIe3zheCQPnJ5Oj+sYQzFyhqZQEXzgDx8FCQ+qj5r0OA+nODGPXn0idR2eb8K43OIHUtW6aFo81Y/W/iS+cWjF/N1lskr1j9aiVWiqElZVusKSN82PkOgZcmKaqlkpRKsSdFds+5+TVelHotxc+1wskFupQ4+SSqxnA8pvXRia/sIl/rDdm95V6zqMMBnwKnXrGTV53mYGW6mPN5US5OCubJOP57KgDPjd8bPhcuhKEesYSjlYzY//kv2PiAdP/sjcnY8s5RPC3ekWtVxp+vooloaB6ZA9Dl3ezW73j0ZyZ49EaZ6Lp4/K2l2w6Mj5XO9cbdAXjwkzlaR54TVgwtR7j7X+leQIs3tc3d3kcM90a49v697ChEpag/IZv49aPOhPf+t7RGkSyuBv6zePS49PYSJp4bVOOkPrILe62B/7amkPRNPXI4+fRF74TY9D6zePnE/XMhPC09fVj2Kwld1t9M2PHU4eSiJPUiDv0udALVnXXLTcHVmIT4bUGGT60B5QSE/4T0Sy29JZXKNZ893IT+haAd2F+pPkljX6M/BPpeUbj3TYA4/+6XVwL4+wEpXdZTFXi5BzlggrgL2Mdk+H6UZP8VpCT2A65k+iSluPh+IL5Aiz5E9sG6RPcenLjzRiuk9eT2ZaDE+SSn38Q4xaTzjcw2ksT4sSbsLmG64SNk8z6tK3sxIKV7SMHY9mTwOZ2VM8T7Ush925T8T8XdL4T+ybh93CTyeMBhIo3OFqtDilT7JPhxlM0230VU+aFgfSj4/VT0VPCVyaGD3QtEp+T8oaqU9pWFaMl9ohT5+Alsm0T6FPGhoyT6pPeJnz0t1P5JnIPefh4kyojinC2k9jWIjTBU95OD5PgU+f/LTU6k/dTyKZrj10T3HxAU/t6S8MpYK6SkaDpOl8cllPQfy0+llPoo9AbHSGWCLaMOBp11zJOEjGeyN/wo9PmVVyPUeDr08tiDPkU1M5WcGUq0wfTyfhX0+H6OJP5pRAz+FqMP295AQCck+IapgKvigR0IIj7HD+mM/hUrXy5i4wqBsFcHdkv+E5DKHm3jDt4b9PNz7OW5lSQfP75pcoZJtw867LH08vMnVwbBBIzz1i++Rq3OyUtYIn5PPcBxwDQyAUwM9tIiVwOPz9Twk4F9KQuAxicZQ9gyv8GkN2zCB+z0Rrgtqo7dwU3l9zOMz8O94EO9O8In+XyqK41Ep8EVpqz2t8ZpXGWlrPZAPGil2YWfHQwqlDg0QSiYTkZIqtVPFxu2RUiq1UJyI4CuEi5agLuIWYmCKAanrPBUuMIprPJStJKTbPgUovDH6BrWqqrriKF7Zf0a/LvtSTqm7PaFyFinbcYcv7/LtDJFgMrDMps/ylVAjU4EQ9/KhBuV5tjGYidtxGz6nPBEwAK/OIUc8MK1q3RSyLnof8OEyptTOEiBR7mNRDHwWhqgdqcTPbRF3R9c/GqQ/UR9FPxTry1ah+6GYLVbU7BZGqE4ZW8gWEzPUFz0hDg88cTGGqhjO9zyhaQarrM0r8EVr3CJ2D7ggE9Y9qS7XWmIO4sar7g7XPsmQvJIW1lc+TjH6qUzOIomXPc7DDoY68G7ixqoOp3PRDRJeqJ2qRMycj0nzTigBh2SlDz3t4CpM21BIDLEyGeHngOArLimJapWT2Z/83e7p7mPu1Vark5A/PTH5QAqCwwreyythcNnxQL3ngfbdkpNxof4xTQbNayC/kF/E4iC+GJkHg1fSLWmmYkkNJZ0u350HFwEgv1QQoL+ZkDADUJ9Mk5C/yQ/n01C/Np3Ix8zPEyGmO5ZZHhghSC14Z4CJxAsOaUuwvTLJEV4wvPC83CZGXWdBML+3gXrAdS2wvDCgKSCPiQc99i27Sgi/vD1S2jxDX4LYpIvTq5ZGONCl49NZdBtLyu84XQFJlrD1QVrjLM+yIAaTdaLEJ8vQ1aHIvKi+4ioW273DjyAUOCi82L7JIUi9GwHKGodjdIHhIiwy7hsIv7C+KiNy8HLnB4D4vUZgEGhfkDeqsSMxxxfN4UlxO7jDBMoTDXYsvIRBibZfaVPP0TkhmL7ARbYsz4NEvCldQ0NPqYS/o/ogKji/uSDVWprykkC+hU0jHsO68xi8uIad+xqlGQMmsOhzSLzAKEEs3yJWpu4ZcUhDaHi+A0K8zqUsuIWIvQc9NMBvc7Ad4QOxUsi+dISr+ADMjL7Vi9i/WvJnlAy8JL2fHei9rIfIv8tgBLztSSy84Cijl7i9tXeUvsw8kGqHggpRaMta8sHbAjHsvcy8BM9wvDCj0VH4vwy8iLwreC8qOvP0vskhwjBWE1FRqL23gtnHBL42B7S+WcXwvv5LJrIpxES+VQGAMMaThL4gKBuXFYCtSUy/5/CjQdeDvLy/ybi8wr5RYHvzeLxcvhtV3L8ivCK8q4KwvtzpLAl+bvS9Qr22gMaQtL6CvcS+Er5K8AgZpL6XqMaT64Necvy9TrNSv3PRaLwGkUlQHL8GB3S9epESv7FQPLzGkVaBGwNcv7C+XL3tAwAorLznc0sDyIPwv8axhoD8vWKnJrKLwhng1LyBLidwIoEAgIfRwynPczwgc5CUvHmAcW0Uv3PTwFYWoHFuQr3QJTZtMbYavFVQEr9qvKNDm9PCvidzqr0TCEy+T1A8IAJ3Cr0KkTnHkryEvOK9RLHVA+K9cToSboEBCrxMvd2QNL+Kvk9yYr8szMy+QwcCgyq/EZp+R6ySpAEkpWUk2e+4pGq8Kr4KsOq9qqZSvqa+Wr7Evxq8OYs8v3q+T3A2gj/3Wrxpbjq8IwgGvZR17QGWvIi+Br7yv1OTFr16cSkD5r47cFNDu9CSvVlvzaNRUgK8LwdO7Yq+0r8ct8KDqhoyv1tzZLPQgBrxsr/6YLa+cr9+kJXssr8GvaKS9L/6vIi8WGOEAfK8MKB54mGgh9BYvWqxvrMuGu5IBpOuvva/Sr2G79K+hM2yq7i1XLyqvGUiGu3cvziqpDFqsha9qvDkv4i22r9mv4Qz3ry+v1OTQr/evca91r6Evfrulr9DCEy9jmBev6K9arCevv684rwevmilfr1iYO69jHZin0wsoGZa4WpFyL9RWIUOmp0/gi2oKV/0u5q/vMm2Xyid/r2+Mhi+5dChvyi+XoM2dpG9niGXimstXEfvINdST1ThvUS+EwDEyrtgYbx/In89D8iIvk4ifz0YEUrYMKFWIxG8RGJRvoExJCbl0tG8nL1r4F9WMb0liEnHjlyy4etsnL4gcdDXShE+vCS4cbyrko5EBpGpvdTWpBDGvdjAsb59kNMAb3LLVk9XrOCIvjTgU0PLYfG90bxq7oAk9zLMvYaDOF7pv1tp40qkvMqFhaO5IEfy9Cbch02rYbyAQzpuFL6kvKm95lO5IYAsvHTCRGS/hu4GZzjZAr5+I1G9HOEa3beAmb6zLQnK2L/pvdDXRUJChy4ifzw330XHFAuKrhHT7tPrSYC6QEnxRmvJbOoVvgj3oq8lxpdHlb3Bw78Ji6OnLFW+5U3kCIlSlb7h0IcuM0zRm08v8VBpRiYs3RNLE+tNsq0EuHkg2Ua1vyKuqt8RoTW8XkJNvLeTZy15tNlFhKHneg2+JUyW+y2+1bZMo/W+h3r75nIwEF1g+TzQJzA3Ls/KF0eNvzW/wLEKrUD4NbwPMWUQ2FBpR128MkOYU01NhGB9UhhRD3j3oActboCU3vlE9b4yQX2+B02VEuzh+xQe2htSpYPzFwO+8Lo0Jq28S8o0u4W02Uazyz3R9iNlqcix3zhjeHVMXb8irznSrFVzy1W/8iB1TZPIzbwaxwUojK6CIhdFIDblMTjaTUZANl2+zUZgrx2/wLPjvdO8A06YC9D7tb7tKbCtrkIVvv+Yp1DVvh1GIK7AcPdELK8K1fzfR9JgrJ0Qj0UbyEO+47wMRGBj+CoPivO+61DBAxQfQqyaQXPGIyOzv6qDn4lNKj+ZWzIzvQ4d8qyW1DW8BeBEKUlRi+BjAkT4YSBaaz2/Cq8IcvTEF9hwuHrRU0frvGO/eMYYCLkqI78Ex2O8jb7Nv4bI3K6Nv5DH2Ahkd+6pHM40Kqu9XiIg+Fu9M0QHvXFSm70SrBHCG72irpwqs749KTSvMTt2+WcCxPknv/poxK+7vT8vp76RoJO/emj4ra5DVqnnvDi7USN5oI6hZCieQYLSl73WQuiK17+8Q3aqQgb7vk29OASkruu83Hsrv/nFNaFHv9xAHcdQc+Ss57w8a+O9D717RnW8XkP3vhmXitYrvp4dSq4E+3b6ZJVbMo+9LsoPvqO9PywEcq+QF71wqnu9eVJs07gESChX5TCojK7rvohz5K7rvt0+snDysqtFtQvAs4ysKDTfvCKdHWP1RhW+rDZnk35YJxcfLNz5b6IXRzcs3Pu/v80rydQfcnO8DK44kLwCnUWrY+1EiSgPRNssuyK0rOixM2OxwV+jZaqYrmL6fQhtK3NiIaCRKQ0pAim/vSDesED5rheRdxJlTM9i8Sv/vu9EpK2QfJCxMK278aRon0QzGVA0HcTI8nSvYxEHvv4qfSFgf/9oQH6gfH/Iv0VwfmtEdUJbvGB+gH0CKP9E9KyJRp3QAMdrO3Ni7UTEr3+/yLHUr0qtLQNAxVXVzqEdY2Czf2thoRHjBMU/vLtELKkuP/YzywZzRKh+qRRJ3YB+QH/1YUpuxq0BsMxiojPnjubiMCOHQdpB2H2yk12HKjHt89VyXXUgQ7BMeH7ddnou7AYP57IsA7pSMZjQ+HxOVDeDkXFN8Lh8nlTJQL5ylOKfQERImVFuJulbDlV81iR8U+NPkIN28jLEf5i7vflKMTVTL+eSYK2H08AHqBR+mmGuVXh+ElRJQYP6AjHyVvFPthKCQAf7b4+AHaoSpH/iyLDg8BGj+rrzrFXEf5RLblSEf9h9JyuEfTwSZ4FEfuxdArBiVHTxJuvpQczjuMFCkUx8F6rxcJYST/vxS4x8NfHswnN3qE+Rc7R94O06MaR/bH3BVzwx6W9vjgJii3aU23R84vFUBq1oKWwyVsgSv5EXguFwwhB8kt5VK0Hsf4C7q/tGM+R9FJYUfjP5q1ps4jx8uMNb+0+QPLKUfpv4GjAdjXx9lH9xVfFAtfCMfUQE71RRUzo/JH67+r1Zw2wEf1j1nH+rwkR9wn7sMsXw+H8H+0x9CNLCfgQFCsMWb95wDHx7V5k1LFeSfsJc5W/ecQrBI0CmzVSw6la8YUd1ejOcf2utWVRifnOLfHyOpCKDc8AtI3UArj7SfOKi3HxSfPZgU+GLw1j0kn3VTjXDkqDcBfh9KUlifnrrFHy+CPR+j4QSfvFzg8CP+cozSWM6Pzwyc0GGzup+yn1UB8bOknwKfUAiQT98sZTRVHxoZbh9WlUdw0uWnEsCfEJ+OnxqMVXw5H3lVjh8wn5BIDwGvGKifxp+Ez36fwviWiJxA8hlen/3jWp+SgW6fXXxgvHhpyFvsmKEfTJfvmwmfAx8T4T/gSPBKn9fd6Z8xnw6fVv4aFetNVJ+jHyg1Clh0n8aktBnZnzcVLJ8TnjqfQXyxPPgBRZCZm2SfRZ8ST42fm8jKBKFeylDun7mfWuWdn8MfeJ8CsL2fhJWHWLHi4Z+VH08fueJ8n5t8bx/cATif3J9lHxOiMR/sEzyY734dToBb6R+in4XYhjB9OJmfPuJeH/afPJ/RWpOfc5/L8CBGiwxxBBiCUR8rhmef7BNNhFtODpcOW2ifrk/UWymfl59uaKVbL58FWu8TxWctp47KpxClLLZ4ox/apKVbhXipn2MIkrwz1T3kDfDS1KcsAF9rfoyhVtu/pKMf8F8KWCBfSF/x1DBfkF+BAdoTwNh6gXxamA/TLK6VWf6b94sspmzjmDTQxF+OG4jQoJ/j41tY5eyCn5kBSVDA2GpQG58odMlbsm5ynxa6TkAoX/JQcp+86SpAwJ/XGDyfDj3Xn+gbdeSzZd6j3yzvGIEf6r0ArLQUPASj4dCfqfByX1Dluq4YX2JfioH4QJJfsF9PT3LbhXj0n1GfFZ9vslWfQIFbn5sbmiQkgWVDCZu0ZMOfnOUem36s+p/yGW6Qsl/U0LqBd5bcX8AU4926X4vczZ80E3TY3l/IgehfEF+D5JqBIl9MwIZqkoHYX70wI0yhn7QZjF9RX4JQfyQhX8hbrFAbn6pfEF9xhA8Bvl92CHRQ459X/l5fYiTi5eEf8V8ZXxABTl9SCMxfQuWWXw/wLdx/JLlvTYzDUt6P1828U7d6MOShpEfN0+QtX2IpYbSmhJNeM6SlBD1N2DjlJkTUiwTdjR1fkUAprGkE981jX4hbQVx6BaLw0Pp4EfFQG00SUIJblMtpjfDkNF6wW66c2Y31XOtbi19fNI0E7cxFrHAPA1+3n+8m7PQG6tKNSx/K0HPck6LizddfMyZC1LXA/oSDJsyEfCjHjR2Et3q0/icOD425uHtfg7I/XxtftyZvX6+gvQUrXzNf8KBRTYKEM1/ZsJmgpQXTXxNfl18m5IEmgqy3anuND192W1OyyqDI39ZQZ6xC6hWNGN943/UwYwXkmP1grMHbXxtNnHnRe4Kk8N/lJrBE8Ga039N64EQJpL0FVN+ARPURYN9mYA1bKryO+WpqAF6wb/Lqo18o31vMEy3OjWlWiVt1/jb5L1/vJgIS3KRXX88MN18BuNGk8t/830J0DN/S35Rb3rhnJM6N9PDKW1rfosCM3196swRYpCrfXHAw+hTfpt9W/gSYHQTlTc1fS1svsrn5eBEBXtH9aYFCTQaciPrZLDb5ON81Jmtf2Y1236Nbisl7+d7f9t+w39BNfN9ePrtbk6J8TYNf03pI9rrwR81i8BCmmq57+fNkQKZIASTwCd85ZpHf9ppATQjfyd9h36aWNJDAyYBmlt8S2wO1ZxCG3+NfKNEl34dfeyaSvLzf1QTIXoAw+N+l38cmmIJ6BeHfN19n9JdfGt/HJhYOYflk5DXQeID9391fMd/58COWPrSd32nQE9/y+arwg8y2mydfFk17MCoI/N5fNMyEN15pbi3fjdwAXrHErt9OTQrf09+obiUF698S4TPf+U3u37rbS1+V31hs9d/5jWPfbTvllo7f0N8s1k0EK03Lnzxb5QaUZmMFiZD/W5nOtQW7X+QIZvYlBbXfD9823wTfwwM334Lfrd+X3wdf04NLgmff4D/fS/QkG6LpzdNfyD8m3+s4gSboPz54g9+u26kAorS4P47bHLCitMHfe5uTX7nfWD/tsuP5pD90HpzqrN8+2zUE59/g36Z1KD+7TT/fadBcuCbf1M7wAzH7X98gP+F6r9+IP0V65d/R3xjfdbgt31Pf5mySnNjAvd/UeIvfYt86XrWyPrTcP43QSj+z39o83mzt3/KNOR/+bHLea9/P357Sxo123yb7Jd/B32+6gj/X36m4rD/0P377qKQk3wFeqbj06hQ/2eRi0pTfr263anFNaD/fyWwFND/9kkUHbj/dbJKc2Y0On84mvwQ6Vo2Nut+IenAPMj+N35zu+D8UDJI/w35OBwTfB98T8G8wV18QP3aE8yQ6310DWT8ZBRAeqAhhPyTzVYTps7xQTQR6zQzeLR9LeikFRzw0kAmES+NC3ygUTrDFY+1fYSai/v4/rT8MQmkEQs2CU4/kI9/uzZU/mwhPauVN8kya7vEw8d+JPye0yZoKP+QR3T8RP7k/7T8E8yo/ZQhH3/Owv1+mLA2PfwSoP2EmtQ97tvM/RWzAdB0/sj9u/jd4iT+O1PFj0D8W1C0/Gt+bP3s/Nj+1qUE/jT+BAeXfHc3GPwXi5T8BP72ENQSjzaTf/5XfP5rNRZADsFc/az8lP7y6NG4XPwzkbdAHOOE/lo2vGAfQuz+DBQU/Ljt6P/LN998l/o8/nT/4GSi/rM2cecHhQupNX2g/r/wWN5Y/VnR4cAPNuL9oDQiQ2M3MP9XO22Pf3zRe01ClBDtff19ZOwUOuVYzPypV/z8ZP7xeRL83Y9A/r7xaNyk/O99p/iTzGt8X74nwQD8P9NpYYSaSv4Qt/t8v33Q/QWdFbF7C2t9Kv1M7Kr8G39K/8SbjP9PA998Wm5LfsUDEcDpeagwl31OOvF7odADqY8CpPwTQzT8P9HBWmtDEbiUF7vb60Ba/ufku9jfkJr/j+d4ROWa57m1f3gFhJiBuegX+v2hs8T9yv4nfsmxdX1xA7r8GCBCZBt/OvxHQsb+6v5rwKgjMkQzf2Eg73w+uorRmvznQgb+jwEa/EWye34a/n19wxiI/3cCRP0DGYD+lQCy/QMYWP0PpvwM2v7W/Gj/d0A7fM/muXAxenr8V3wEccMaFvwhgbz+5vwugaL/LdeQ/ZyC4v6m/Yfltv3xsOr+q4MLwzb9Tvz0gikht0GO/YbRZom5hxD+BtGq/ttvyP/m/Ah7li2tLPPbbRdIycfGK7ZBFL1hx8fVtsug0eKpMPW27ahd4DtlSHZuFXmzZmFSCLlkxWFtLAR00MqK6AuTFcA9ZJtbC2ff451kvyfQE57/pQqncY1jm7VhFh7+8WRiL6T6o+XiZ/DogfxL5eJkQhiB/8AU4BKcLO72KExoaTwsWxT3ZMJy9OLtqr7/z5UaCezmW/PjZbwJpxbe/pBoKKATFcvxXv0q8B7+nv3KPcp4zOYB/HJllEZfwzCGIf7qCRaneGO7ZnSflqfIEPkIw0jx/RHj0BMx/jcWQf2qPzH+OaLx/CWIoOnposn9IrB+wDlmKf2ApGwsqPq1CGkBiMiVY9WKmmJWxIXgRA8B/P3X2fbtk5DodQlQT5WRmfzB/lTmIfOVZpLwP8WXt1sVawrSK178Ifxy577/pQox/ALjqf9k+z2S51lXogn+Wf+XZQmNouMAKZCgpRXwUJob7E6BFkX8pQVWE5Tmqf4TD4H9jhbB/7ggx2aW4Uwtsw58THMNqsMJmmnBusNbUyie4+FbovBCpCZFQ0zGWZnO1/pSM2aocITjCCgnZzxqpCd2I4LE/x3sDS18mcBmgtZQXzEQ5ABA1g6CIo5qcSJegkEP/iWR8/+ytgzNtkjlToFYz9X+v2dJJY7XVf7DZFSRVfzdiFX9Lf3V/Jiy82Y1Y83+7UEtCWChWtEYEnXCn2ZIYVrQ7dO1/HiXwtKxvqKRq5uyertgcWr7Ze6TLf6P001kuoBI4eRSUZiyxJ3/JGNyQqNm45W0zNEm82WhdA/WxGIw//dlDf8+ddizi6r6eAdjffyV/vp5QKV2a1OryTNGTbhhPaqDZW3+vf6kC3zFrfwUPbGSM2dj/AZ3RpGrmL3/zCY1f/dm+QL7ciNSSASY5v3+QnVT//dnsiED/uzgBZi/shjOaNO5maktzteqE73+taOGefbf+sNa4zJGrQTDkAv9kltQn/P8vaNXue5R3yP/4r8DUJ8L/Mv8w4tq48v9zvJL/6C8ffMr/1WiK/ywS4v8q/wkm9C/B/eyYRbymgktAWSV7XIVDb7cJn+r6/A1By5b/MOH+94P5OvqPPkbA8SSLiejDOsALwvAqcA1kIAgNMIUfVFePTy0OVrjEJv8HJZ7/9+9doLclZv/37x6g2sLsYuTDicCPBbgf9v/skGtDSf+/oG5DauBSbXzhqso2BqucRUQ5qkCFZ1yIH4n31Ul5XEX/qf+XJOpk9v8zTIjLXOfFz+ENZdkUxI3Cd6HESZ+htiQo9VyNEufJDaGhXI24513/ZC5cjeBqls75Tq8lWKl2wgeV8sBZ2e7CdRzhwBv5wyJJJKaJhS6z/1eDxqoNg098X4lQ0Vz1G/meoWC1Bn44hYeDBJEK9T3/wHXTHP3/a6Spgyf/hC4t/8DRHGYRLkw0xon5PPkacqi8NNehSSQaYNGTsTQ1Ovk8ppjKHLw0Y7IKJd3/9N4t2ZzwhC/BOtF/OB/9b/4fvBQ6jaMIvqcjRK0JzwgOSPRtbAuPktMSQ74HM2lAArLsbPVeGgboTAwAAA7DYIdF8bzrgyPjIfnPv+l/8abDV3hwAVwuE8m2QYSAEqLV2SP3mC/+tACB86JkV3/mJydf+2JFN/5kANhfB2ODL830kH4xnDWoLgdQeQI/ACi04hI0rqIWWVGSfACjhoLtykhoQvXdIx3kSngCAN3hJt5LpI4gDx26X9WFkvIA2JIigCqgiaAIUkPr/d7GAgg1+AOPgJhncwcOi5ggaph6CF5BiYA0fgdcM4OCISiEtDdEBWchPBq9ySg3ChnBHelOcVQg2zzBkPYi9vemGAB1qmLN3gsAVZ5f9qVEpUO7BAK4RAKLWGQIWlDQYh7TJ3FtMawBvB4LQYuQ2cYM3ubh86u0AgGmhH1Qg1OLtq1NRatC1GGuFLkAqE8+QDnETJAJQCMNRKiygHxjpa5TEahnX/AYgwh1Cwamk1T2iaUR34FgRAySTpxekAHiSL8mLoJZ6ssEi/Fv2IqWp2R4SYVbGVzGACMT83XwUOogfgxJvlwLNC9PwcSb5HWp7H+hH6MhJNxgGAzGtYFz1ZgIn6E5KRxfn6Ae5LQ/QkUdGO7hoVqqEQEAPa7OhUuDHAKaAVOhPYBCvUrGDb/3LzsOhQA41d4N6hdoX07GcAjNsrC4B+ZFSxIJE5+Oxg9PAUZi3OHf/lUwYgBJtR1gEnfBmAS+0ZMmQwZY2B0yCilOhDF0kxACnpB/E3WMImDYwIgZJZkS7AM6Ae8A2nai4MxSbMoQ3QoMAlZoa9tVwYU+Rwhs4wM9C9PwFEiXoTr7F7MYR2uZNCQHgIg7+B+DB4Bf8JD7Apk1B2i5KG9YDvU4dhM6AcfFRwNdCcOwN9Ca5hZAUMGZRQCEN6ASe9XMYJXoaEB1SRgeBJR1OPIXIP8ouZ4udwiQ1bCEWnCE8hcgU0iFImbkAqAtX+kRwJtzKgKeGo2ePUBsSIddYPSRGYOqAqRAmoDzQENFg6jipDZ0CA3Bbj5VfW3QGG8Uqu3+JlLjojyUzH5XXJQ1lREJ71MGmoCuCcUQ1QI8CRugIGUm5zS32ToCrK7L/XJkAPKNgmu/piWBRgL28EIQacUpvBLfbphEMgmszAQOAaAyHCIxlD/A49bqwsuoCxQ3mHQDuGA9+yTIJ6vonkmpHuZWAzsfoDy6TyOWpvJ0XVyu8UFzySV4mDAeI5OGAQYCk+ZhvG9cB+YUauMYCpxjdgIHlP/Bfhyi6QWA5oMg5HoJQZQIVX06oBZgMLvvl1c945dINwaZIE9AQ2AtikJV87i5egNbCiBwXv8o49r6TZVFdgBIHDsBRJc3SDNgN3UPVUQqIy5hgS69oFkasWwc8Bt2x4BBKNXw8MeA58ACVRqlS+gMalLbcFOIW4CiZAmNVP1sc4ScBeYCVwGLgK83FOAxsB8ChKHB9ASraj/YOIGfQFrfQsOS0ZM3iMcww4xWoKtoWnoL+VfnISECJwHB4UvAfmDOCBGYCkdglgJltINXA8B+ECKzBUeRbAXk5QCBCeJlwEfInNQLu5ZqUU1h8LDcIE/AZmA2XUViQMIF0QLCqKxAwxwfQEcUhZVyA4FxocCB34CCdxgQLnAcncWdwRKQ/wE1gLtuCr1FCBdNlPmqMQNogcCuPZ4Yqh6T5IB3NlAiMGKAFlB/bqXgk2GBpAiEuzEDQy6ngE0gUyrMhwEJtGAgRV3XAcbqL8+pIUr9DWeDHSPZ/IH+aRoaPB2QJisIroR2OIjAy8D8KSFBNlpdyBPaQVHiQQ0cgVpiNC2lqJ0byDdAtlGhbNkYpagqkSJ8hdXmOOMy0EPRuXgur0awG2wKPkIiBYLZJQNJWN1CGKBfBok9R/QiFSM5/N8ETepPIR5QOCgTnqHyB7aQ/IFcsGVKOLIGNIX1ghQQNiyKgf+bXzAZ/tKTA5uBnwK6oAdCi+pUEC+IHZXklA7yB1UDhqSzYHavFVAkccRZ1pQRQGicgScvSL+qMcBADBIWafLhoKpEKp4PEIuQJuZiuAfqwMm9loFNGSNMIeWWqk42AZ1AcgELwPm7em8YTAg8QB8nZQF6kbmw0oJ/kTj1HnYMNSEqBvVkUcB2QPygbheahAsiB2V6xQPLYOUgR5ez5YoBaKGm6sF9A1O4P0CWoEqSEJXu9A+qBFsgqV4RQP/DMNAjyBb1ALWClQP6geTYWvU6eoGoEBChdfM2MaGBJy8AYFkWk1DkshLGB8MCRxyasVi5GDAmbgn4gN4COOBwtH42NvAbckJVAZQNqkGEvXaB7AE37BEMjCXk1AzaBB0DIt4bQLxqtFAp7EDMC8aqdtXiXlNA2AkXUCPxBNMjGgQwwMqBhMC0WbiwIRgd9AwSk0sCRxwV/XmgfLAy7Ep78U8DowJxgcAoDTAbu4RphlQNPQL+hHKBzkhypCDQInRPYgKUseEhQYHn4X6oC4he1EVfAdYH9QIQfL9IfGBFyhxbBKwNpKPbAkxkMEh18IawPiINEYLGw82wNYFQEGH4EHKRag+MJMCBPQIj1KHA+xQWsDz0R0HVSgV3eCfUXLBAE43QPf3mLA6TkCUDA4FIwIWgYtYXacQcCgWQzQNiUG1CVOBOWJAoHxwK0kG5A/qBK4B9YF9QJHHDRKCGQQsCJoHxEAqKh5pYPawSFGFriyHVgT5AgQgZMDJWQYwLIIL7Ax8MysDylDhwP9gZ3AsCUAGgKYG5QOAIHjA2mBUpZgCCXv2q6N2wT6B5Shd3B2gA7gdVA3QwFUDy4H/jhCVhbINeB28D5GR0BztgfvAqqwybADYGEJnIMDbAk2BmUCv1avFg+gVbA2AwX/BkECbWVagTInXOBNWkioEzZE3geNArTEWxho4F41UWgfq9SGBXMDuxDJa16gfzhEBB58w6MATID3gSNrS+B38DfEClkSbgXzA2H4g5FH4G+aQKcK5kWxYg2AtNLOi2UQFggs/UZ8D95RRMkCwoVA8GBiCDb4EjwPXgYspOuBlCD/xw5nDnfMjAshBRxh9YETwMNgZ/AhOB5bB4HR4IMVWOUqb8MnNp9kD9J14QXciFBB7CCy4HwINz4kBUWLk1cCOBIiMEjBNIg7YiNsCvYGdwID+OxAJ2B2gl+4FB4mugdanYhBMcCmYEiIAiBBogofUocCchIoGgjgRPWElOxsD7oHMwJpTiwg7+04MITThjEC9UPtA66EQ5wv4Gdemzga4gjhB2cdbIEOIN32PXAn+BieQq4GDwIsQQwg+RBJiDopD+IIQQT0pcWQu4sfEGCKjQQeK/bUwdBNgYFpYmyXGvHae2JMCtl4SqDxMvNrEWBVtUxoHttHXCLeIIrAUiDbEggINqpFogNpmZSDecC3iEkgMmwEBOEsCIMQAaByQQ3A4uqUAsl1woIK6pDURE2yDep9kBdUnNGkdHH/UyiB+kG3wNuMrlArpBpiC12D6YBJgW0gqfSeMYZYHCIGaQfj1GWBp4BVEFTIJRgfkg8EyhpVCEyBYlPnOT8FLWHiEukDzQJWOItCE5eRyC9oGInDCgVkg0SyuSCTl4NoDGgboTFZB605UE46/AJgU0gpIADSD+oHSiGOge3aV5BSyF20Bugl+QbrA6naIThlkEjjktECe+RVk6mwqYHvIOUNDXwM2BPEhuMAIOHOWCcvAFBEyA6r6cM2WIL3+YpBcAtZm7heBk3sTYDnI1Yx88BvfyVFNvYEZIkb4tRQTjkMcLUgvfm6a94CSPmwADIA0Qc47K8pBY7LxpQWC4YWyITUa0idoSz+HhbYNaWoI8UGKODhpNnzLFB+q9ZLpk1BJbEyvJpKOQ9fHBae06gmJgKewdkDrq4yKWZEKcBVlBPdlj9jgrwTWgAGRVBC9haUEQUgEwHKg36kwFIuMAjeC03tXMJUUYqCkt4HtjW+Gqg7VBvKDueh8vGCQhtkZZm9qCn8ASoPAFIdbAVB7SCuKTqoNe4J1BP1BDqDCUFUM0bAjQEEVBZop+UExpBDQTgKX1AmeII0GQVDjQfiYRG8kZhMGy4SDZ/uKDalB/2IoozH8xNlpktJn+29k9agWoHOgR3zbCkY5to0FBC3fTAA4EtBiDliUHBrWXwPqDclBu+BXUGeAhMdjDAkNB6gtsaRvL1tQewLOu2CK9BUFN+2LQQGgp/0AJgBRBUr2ikGhSbdQWq9oUoZzxh8PigitBLQtxgbCoJTQRIyPtBJy8Q0G1AM3JGUddgIBWJTcDW1B/UKbwGTeQF59+bpXg+pMKGOdqBgkaUFWIHDPNALCboim99JAItyqEMmglZUJjUGRQ6PFRQR60Ft4dTBQ/y3iAg+DWDZ3WP6D3EAbNE7FCRAePEn4gf4D1VGQiPGggKIup5b0HYoNyaBd/G84ZcxckLpGgvQVUDYQIoKEb0HCAkPQRJvF+Anbxt0GTYjw1CfPUfkKeJPxD5XjX5nfIVZe56D1waZzz3xO9iG6W9Fxc1oLwWoeK/PAgux+Jf0EFBFVJjmYd/gEm9AxAU/3/+KBcXDBiGCjTigEkwwWhgzTAKGDz8QhODhuBhghDBY7U6SSkYLNKJ9/KwEeXQJN6QEjaZipghlBXAhMDifgWzwKsvfvghjNiSQW9EU3l8waTB8rstMFPxVn6hSzWygR1AnsTWgO1cJDoWzB8+5KF42YNhkr8EA6CrmCocQDeWoTo5g2GSzmCWIaeYLiIO5gnzBgWDssT2YPXbi+gNzBXKF9AE86TDJBLiPaEGZI+kod9wSweeqfPMDm1EsFpYMH8qklVJgj9RajDq7RqSnI0ZOCVTAx0rpYLveEOlXhoBIC9uCJNDp0u53UjKZjQTix5AI5Snt8Xz8+u1q0rDH28XN6xSdKmJ8y1Q2d2cBCt8FrB0QoT0r1YPEyplyOyiXjRdMpWMFjhv40F58YwZ6spmNBYju3VHoqm9QShQlYMKwRsTPDK82Cn0IMpTmcETYRYm22C4XAuCnlnHclTZwUWIRO7QpTvOBNCCTubVIWcSXYNiATSlfxoxsEdgxzYN0kubBVskXvhLkojYIkaBJTfpUibEpsGySROSqAiVbBJtZRiYbYLkAQTBPkmPWczGgdYKz7pzOQ3+bsE1SZtZSywRsTWPMJY8asGwyDU1P74PLBDWBnsFrYJVaLDg09gNUwV3whdAJwSq0XmCEx8isFapQmCClgvGQymUpTAepEZkJXBA7BeGpQvDJOHewS4ECaYrOCLgg9YLPls8BbngpB4ZES04I+wcaheTKPuNXsFE4Lqpt4YMFWfWDFT4rAiOVpOlJnBC2CGRSOU2yFPzIY7BqODLSrNMBdSuIkLxor2ClcHE4JeFGcrUTKYODAkSEFDapsDgt5W0sEUx4A4L23hMEH7B7WhdILlOH5wWcrQXBkuCgVaXlDO4IdgzXBSWDUcGCYFVwSLg2JoX85LcFmNGWwV8rGTYvdQScFtmm7mCdKCPBhsgl8ztYPhwaiuNJImp8isEDmBHaCzoMFoUeCMz7M4MlVlclCM+0SFV6RJ4LpwSng1720eDs8HrBgXQrbg7nBNPc9YalYMjwQe2SvBEC5GFaI4LtwairRnBUOCAcE5zFoaNDg31Ww5BLkqDJTiyIr4YZUFq5TASpNBDwcVMaXB4eCq8GKkB9zu3gtxWuBhdgjU4MjXEHg0yS1D032TypQDwU7AbLoIfgY8HT4KT8DHgxJB10h9EJT8G7vjsTHLKTMBssELPk8aHVeQD4y2dKmAn4JffOnnESEcFo8ZCLWE3ZDLOTxEf2DXVgU4IdgrjsWZmjMhts6iXwg/JYiXI06BsqvLCtH2zkgOTgY8QoDjpGcl9ymt3arK6BsHQRmyAVGlfg1DcA3d18EqBilwaHcIK+RWCAbjWcnvwYPSa7OlHRn8E7v3LHjl/fLC3txa8LMIE+ck27Cn6LDMmP5+RHZRF34Ugqp5BjZQo+j9RIDYRLAUHo/US8b0FMJpAwKuSK9Q3YjgPoIVCpZxIa7og+zuzzIkAHcKgh9hdfkhFEXEIf7jZkosrsowF5fmoIZNkNUoKhCqTJNF3k5OwQWz0neAqh5alS71M6AQQhfLtv3TGEN+xG84fLY6/gGYbnNmkIdcHDaAsSl4djzfXFrpQJZPiVHloZDONndnm4Qxj0IhCfGYf4GFLr4Q+ZmovgAiESEL65vIAa5yZ4YKq420wM3g3/f90XbwV165lHGcFr7J/sfm89rL9uAiCn5vKDaRhBa1LMUBBWGlsYyuhal+gYclTXAeM4D34CS4pSJU0FCoNVDSwhkNBbNb2F0FKHMRLIujIENTr5EOIJJvjc4GKmx1xKD/QKLr+iDY0Y9AABydQySIaviB/Afm8Yuz/um6IVCpZcodeJlKC0tU++CcWfohMS9h/q8ECooEljBSu1JQES6/vj4Xq84R4ipeIiRAEKRiIHMXVUg9hdNBS5kUqIfDoLv4fbZxiEcUAINOCwZYhqeJPrCSqRA2AVXdMI0Z0ZSgxxHiIXCsMuYupElfYDEJjsK0Qn4hixCMigVEJyIQkQ4uqKVctQJnLy7oJQQ5uaTRcfhiUEIyIRuXPColoQSaC5EOb5FqVLPErQEtVJOEPQ8PmcebQgRN8QamGDEIUQwLsU4WdiMzlonailVaWQuuutjXDR2RIeL14cLOtJDCqAUkKKzs1dCycJDxmSHV9AfSHSQwmAlJDF27UkPROGSQ7khfngKE6PyCFIf4aXJulYdrD435iAnnp8QgQqeNp67gkWuwtItL6u9YtdyadEj0+MW6K7+TSAd8jFU1OdFy4Q66CK1ZfSKkInKvf6bUhP10xiLIBGgcEeiV1BGPJvUZFbFYeDbydEid35DSF42FL1rqQ550HUMlwTedgd2E6QpoQ718LeT4QEMInwQJIcz/hACI2kMtIT1iACEJ7QOJ6wJ02EKdqJpA9YtG7gZcn1ISgUCiIPQ5YyG9hEhqHrSI9E96RyXT4znWJGmQ2GwKxxmtxJkNd5JGQuCqFpCLeRJkTEIo3DJn0J7gdiT3LUGdEa3FZ+jZCS9h8G0nqK74ArQ/GQywjE1HxdCLhaUhdexPSGq3ULIfnsHrQTFU21x9kPtwlFeIQ4mm8NsI4z262saQ7rK+NR12Tt/UjdDdUM0hZQFAVwqkID1tOQi3kipDrfyVESLIbKQ6sBDdJxBiqWSKWrMSRch+ixydgyDGtoMZkWn07KhG8h4q3h5DB2OO6JiwXyGzkIvUk+iZxA8BRryH+HDtIZdlBWoFR5J8hMqwbpI4MOfIaRgUPwJkKH1jMtUI4ETo/NzKCilpGtoPzcFbdP9gKexQoa3ScChLd1DyH57HgKIT0RIkXZDWdyQUOGEB1oUvWtBgOx6vQzf1heQ0chRFCq2xfGgE+OwZdchWFDmqpMUJoqDDQTeifHIYTir3Wooa8wFnKJwptyE5WWkWnWQ/chtGxXW7QUJWqmJQyiheZ9gRzmSjPIYqBBFayewYSL33QSQjEiaE8YT00yGAuiA+MpQnQUl5CoDYqUMOAtv0Op+EJsvOCkUORNkBQlMh+fBjKEj8A0SFwbOihxvJfSE4Wm/IaZQv6q8ZCpKH/hn0WkPsbshYKg3jQAUNj1JhiO5gvEs39AkULcobdeJyhblD4fgTkID2Axifih2ZCMsQR5j+NMEbOyhmlDjSFtIjCoXp8A/B2YY4CB8K3ClgXib8hvHQk8gwzAQevlLMuUzMhzvBIxjfgoXkOJ6QtV41xUYXrFmgGOPMdVCOqCV5gwllk7LHka+1yRIGCAYVGorakSNrpN/Sd7QTXmnQSTMZisQJYR/lX9IXFPg29VDxeh4mwqoTc+fHw9j1nxRyK04lu9lDHo910QpaoGUpXFRhHfI6YpBZjlnG31j/YZe6NzJUwgVdmoVjlQga4RCIyqEAzzGeC1Q2gytrVgpTQmz7tItQhCWLOUzeil7SaXhoZF6h2D1xxICgTisFvdBA47FCZ/RG3TtEspQiSIhuwd8hnUL4RFVQjS+iFCcnh6UPx5KRoHhkblltVDMlWUoYN0ffINhgl9a5lhxmIHVcjSmNDkXhvUKf/FpwMZ4T1DEaGF5Ey8GE9OGhOMhrqEQohOoflLDFBAxBLHA4OgWaMx8BmhpDpLIKJEFpILM4Uh0I7B15yfvA5xkyURuA+pg566tTF5oePCAmcG0wcHSf40yDPxsUpS02Bc1wFOBKDNWwRzwDDgPZKK0LMoKx8feSstD2tADXDMdJLQj/Y2tCfO45XmlxFfYaeSQtDmSDK0LT9KccRUgsZJSlK/GHfnhrQ59meStoQyUQErXAI0YIMGF0F1ic0KztBBAKWhyigqzDUZiyVhXnMCwQXJklYKfCDoaGSa4wmAM/aGkzl+uDGDdiw9PppSB20NTSnvMWqYU0stkomwBNXPswTlKGL14eDsukadFaQnOhxtC30q2JBzJO4rMx0xZDolZl0M1TC6sJvYr7JGzDUZnsVsJ8dTuF0AoET60Jj9Kmwc1CLND/bSB1BPeHVcQOhFdgzSSxYQ1tGZycSgvNCD7Ac+jC8KPQ9uhUJ5xaHvKTY4IHaTuhp6Um5ib4NdofAGSuAyMhtHL0BjUlLLtCJwWJIuJQ6rm4cIoGbOhBq45sRTQhMRgXQ6hw3QY8YD70PNod0GeqA29CgUBkfHKDD+yQYgmdDWUpL0I5ofKqY14i3tHaF2vAU5PjAWPYiEYSriJe2svgp8DB06gJKYB92hZJIY8E9kqxAL6F2vCXobAw9WhRoY/6HOKyZVLIGMn0mqtG6GkkjuctcaGuhndo16E/pHX8NKGbuhGq4H6Ex9y3oZ0wJpyfegKWBrsgAYWfaKNgPdDpaFrvAIYTBkT2h3QZm6GwyBnod8pDBhH9DviQU4EJNK3QwtuN64GYD2KzYYYa3W+YEsAN6H0MO9oeMwHehXvd+GFF7SkYdX3b1GeHIF6HiMJxNJjKQAo6jCRGHZ6yQ+F+8FhhI9D/iQsMPsVnAw/RhQnJJGGF0JkDLMEM0kgjDEVRX0LGgLYwr947tCl8FIMLZXCorcco5/pYVweki4Ya/6GlgkdFHGHkfCcgO9tAJhvS4PdpqMP6zIPMBTI8tCCdCv/GuNIPQ/rM6WZDGHGfBIYQJQMRh/WMaryWQIQ3ll/H8+yp5ggxpVk6wCZQOZuQrBASQ4Dl5odLMHYmZTDTiQP4JrmO8pZe+zM4YaS1MMSYbkw95S018OZzKOitUh6SRoIGjpUdourGpnLB8Ss2cmY6Px6MIGYah8a0I5vpPRa9MNFBB7JLrwHpI8CK+OnPlKTgvlU85g6mE1+mLCGgwtSgGs4hPjUBkqfqmgXIOkbxXqxLy2wcDGDF14kTD3pA2YHN7hzcJUkNRVaXjgfHKSGayZNUA+dXKQ2+0/lODnD1KJPoXmF3vnXlpeHR5hrPxKzS3KyMpAgfQLQ9PVYPhJKjO6vIcQGg+74+D6zyluzta+UbqXiBXmFowWRkG93FCkZ3UbjwMdw2poayD5h39ROFbkmnDVm6SQRWrBx8u74sJxYbPKF/OL5IZfSksNfZJSkW7q0LCO2SO5GY+FjQT9OqZ4/mHRqzPaDNMUmcOXVryYwH3gOBqrDFhDKpxupgNDv3t2ydFh/pIaWHPt0dJOPLHRgakgvh4ksI8jnZxfuWfawCtCvMIpHOmqEVhPnJu5biRxtEpNTFqwQCo1WFFnV+YnqwkA+6wZkWFPfApYTlYV5hFssPdqMsOqwb/vXcOeLDNT4Ssnvbq8wsbE8tE1WEusNjXKe5LdO67g12SesIDxlCw8VhFxUIlbwHDdYXwfDKhVxhRaFdtHMXCe8JroCnwjRJmkhHYPnTBIIsQDhnBxKA4+Ps0EDOJnwS6GnNAzYQ6cTrB85BJYBG5yqYI5KdA2UwRovAxsNOdJwMcOhEbCIL4CaWRVOmwlDktbDZmCNQ3QNvKcb8O2bCj2Q1HRVYmNcdA2IRdhFQU4BH4Ma8Euhaplydj8MDTYa4TY3Yhjwk6B00O1MHBrZDiVuMqASaUEKHJuzaxApAlmkwJ5msQEz0Ndhy7Cp+g3nC3YWZNFpSfSZeeIlDH3+HeSGHg11JIzAFICIuPuw5d4yLkTqC41RvYVy5KDa1AtL2H/OVvkF4ME9hfkI2XKI1TZQrI0aDOzs8LEAEuUGQDEYWoedSYgBjvYBvONwoD/ubz1Bm59PS5ctQQg44//wTjxGTQ6UrQQWly87D+QansKPYb4CahAQLhr2EF0WWcHewxtBgF04XB55kywEJMEoWZd4l4DziEw4TFNdXAD89b2EjLlJ1OvNDpwQHV/+auOmJcCP0BHYn4wkOFYvWoFlogFjhb7DgOGwcL5cs9SfQw/CxP2GoeERqjhMCjhr+ZGKqjjFispJwsThF0o0OH+4xJ0vp+Xnw6HDyoKgUlOcIRw8kQc9FBeDrzSQgTxwzThaTlGlAecU04eo5QC6v3Bz2FWgys4eRxDdh8c9WKT2cOPYb4scFyhz1RagcZAPJMtzW/oZyIIkzq8C4IAmFdjh6xU/2GwUnsQN85WhIIlh4HQGcKfYWhSAPkEwROOHNmAroiF0BLhnZgETYuUhs4ZqIXxQnb5r2FYeGactZNGeUYqhtyQ6cKwYthnHDhGPAUuFdNTs4bhlHiA7RdD7KycI6REQldLhonCoiKvwFucs1wgnkcXDr6j8MHfYXK8cpwEJsFMBxqHBchVwklEIKZrOElcP/qlQxPrhbr0ERidcLPYYZwv1QCnCMuHYRFcTL3UDLhjohf4A4uRM4dRoElyIXCa/Rs4RRWEjwY6kYCo2cIeUnI4mCgbbhm3Dc1pYxFrBFw6M7hRgx9uEkuSO4U9SDbhSPBTnpi7G4WvFw9rhbohZuFYcJ2uB9wrrhEXCxKSLsMKcN1w1SkS9FwuGqcMspMpw8zhkPDKWomOFfYUBwkZQ7C13nC8cMqeLShFHhFnCGlArcMpcmoRcMiYXDueC7cMyeDpSZRoT3DXcZklja4SFgSE0E+4zKT7sIWUNpw37hOv18eEkcM04WGwpKIW5JbuHD1Ac4fuSZpwIq1uQbvkgwpDcMJIE6lJ8WF5TWPJDhSQt8ovD7K6ncM54S5w+ykYDRJeHZVEMpGyw+R4HnC4KSODx71DGFQugs1MRRhxVwSvtrwmPUsFI/EyOD331F+SJXhKFIUCJ5OWF4ShSQHA2FJpeFJKkBwARSJzhqH4HOHsbHw/meSSXhNEQOkwMDwV4Z7hIVyvPDIuFVcPfqFJHNikxtATpQppB92DxSN3hhaQ7CIdCwCpDLw57hZvD4+HnDCYpHVTE5GPXDnKRKUjT4WDw/nh+LCTeFBMmJ4ebwwAYbOFE+HWvmdwCGaMykT5xWhh9qAL4Y84TEa3EU5eGofjFXvsMOVyaK06wri8Pd4Q5w6EYypQHKT2VH8pLYoQKkgCBp2FrajSQg8sEtBYTNGwYWsGbQRjXY8kCkJbzDFIO9BHuYZjaHqCAkLNVxT7LhIVIIYxR1HJL8PDWuSCZCGvXZo0EL8L19AeYOGki0gAwpGGh9Qdkgo/hDqDC64BhW34SfwlBwKpgj9T38Mi4erYAVBuNdyS7gGmf4ehXT/hddcRLBr8ItQU7XOBqOtg8kECamGrvJMW0w50Cfa6bDFkCLJIA1ghVgSUSv8JOXi9XBEYHgRKzA4oNP4VMRXA066Dca733B31EgIjmw99w82AzKDgEcPINB4RhpakJFIRq+rWCJVYMaQ2UgfKCnUFmsaNaYoIuUQWyGnQdPwsSk6Dxy0iZ12SZKsEL6B3AjvuGK6GwEYtIZiKk/Dl+H0138eGykfg0X/C6WrmGi+gcjKAYia4JX1qkIl1kJugxKkvQQ0BHXoO96BSwGV4v6DTcDdV1Z6IRg89BmdwrujnFFAmKb0Y24gph8TBmCK0EYduDMwoKE1mb1tUYNJ+IIOAspckqp5IJ3QL04Y24bgiJN6uWCyrrD9YiQ5WJT4joV21RhagjYw6FdLBE2oMtWghBEwRoQi9BGshmBME4IzQR+og6RqPYiSEQRSHQRSQiNbgB8nTwNYI/UQWLNllAhaVMgiZnPQ0n4gY0ClF3pxhJvOTWj4YoWCh6mcESNYAnkP7Bojj2CKNMOMiPyIGyhchEa8hrWLZIJqA+ogAKBmmGaEeSILNcuBw6hG5QUJEOuXC1BHgiw+SXv3TQYK5IBw4vIbDQSb3xMplwpJgkihMhFjCO+RiZg03ofbcm9jjiCexALALmI+hCvMEjNmoTjsIoGSgn9XdSnCKOEfsInUB6JwJvS7CNa+DTSc8UdwizhHPliYToQvOUQuwjzhEUdVnDkFg14RMWCGaZt9FpdBwvLTQbflFaSlGwodL5AW5IhGBrGKruhaICCI/vsAk5GQyw6E+iArkWZQuANJQ5+6ECUNBkCYo9JI4RHS0VhEV3ecNU8pIA0j5xBr3qOBR7EnPJdWhHsHlWLMoALQwapYOzipEIevasCVYhaxXYjLCmpETVSXqACiIj5TA4grsAM0G+UUJg1YjBqkhEX3gaERyDFqSC3GDFEVTRVUgmJghRGROiJdMuOIjIMLNMRFciMt3l2QT5IbIjC9hC9n1WEyI/3ezIhTxDBxHlGBVONlg9ig/qRbEjPnvYoSqkuJpcRGEiLTNNqIkMc4IjSWEBlDxEXaI3kkG9xNRF6HHY5BsoKURnJBA2ydYjASPEKBI0Goi/mgYp3AzlinOQuOKde5DBFz/EKqMW4iuWEUFA2w1U0N/pbReQrBkaIj/DQkEYkOMRaht9V6ZiLTEVoyPcQK/82U5bEg6eP6OUkIke81SgxiKIED63dJiGfZB5B6hEmUEUoX4Bg8gSWxDh3zEXzScMAnB9T+AWSHYPN0NEbaRzoExH9DWDpLKTOsRIhAdkAjqGZ6t7Sdki/pogHyujg2aPIcddA2tJwtoqYBpNFNLYWkS4jVACygKC0H5g82AydJiF6I4h3ETcI22Mt0BIZzkdViyA3ELzBUJZhC47tzHOELwC8Rx/VOXi3iLTpKeIq8RE7ckQiPiPbwPJDUWwsMkcxD/CP65hBhVnC9mxk6GvOFgep8cNs0IYR0GZaiGFnLYA9GQQEjxox/XXrEacGE8g51wn8g4ImbeGAzOgIDAwcBwBAMscIGzLCRH1xIJEP4LQkcfTBsIR8siJFh9Adjg60byiu0w4+7NM0AkfahWwBdEi8ZAR9lyqNRIkNo2EiXjixrhQ6CNcKzAj3NbyDDURuguoCfngblwmrjJw0HpMJIxhmoEjB6TMSO32pJI1QR6ngEaC3tVgMiSAkPKlwDz8L8wQdaKcA8cOvV4o+6HAMklOT0Oz8nkAipZqSME/OYzXfSTSUxPy28BQ6jDtIvaejN9rYYmgOMCehWyRgddJijqfndEKpKDTApJM/U5WzDP6AnBHz8lZQEWb6YCc/KL+ZtClNxtJEaSN7ZJjcWcwdn4EoB7EnsqEFI2kCFjNdkiq9RRkJKA4ekvcFju5WSLikaZ+ANAzU9j2x2fmroGZIvKRoX5d2SaEkCkdlIvCA+jNmYAAgMCZrFI5Ho8ZMapE4zC1aqgAyvOV4NeCi6ITOYUBhPSRYUigZBkgK0kVZghDCVw5C5DCYRoLGTOIaRc/hVQGc1HZuCcEA5cmeB2bjsEFVAdTOOaRhvF4KKjSKmkctItQBlw1duCNRzb6MtI+I4k0jniTTSK4TpKQ1k43hF6WL+sEjamw0amKBB4geF/AnPendSaN6SugW+zsRRhpATCVfcwNJco4mxQHCCMoVqOJsUxUjE6HDwOZoXhO0fgD7BXaATWu0yTUEEuhWsjdMkukTIGQk46TJBGjk6DhkWJSXqkWOgoZH/UjpmDZoMGRBEVgQTtPl73FDw3hsLH98KCFUTiUP5FfpcxTJ3qQyfzekd0yKDajrEnpHXcPpBFp8cCS90iEZEMMnjpvkoO0EkH1qDyIKBxkWjIxBQHMjEPoPkyGOJsSdp8tqd2ZH+RSxkRpqN9hRakkZFvxQJkY5oJGRCpFbpEyyL3hhwyBWRKsjnXjnSJRzqNMZhCl1xL5CygiShLdcQ76c2AtIqoKCeuG4lYvuyidstTxq2D0MrIq6uE/pLZGc52NkTbIiOukJp42CgyP2JiY0BaYAsj6tT7UmdeGrItxKWncRZGXk3gaHpoCWRkDQ+1okwnOJsHXPVA6LFOazfdVQwFd3b2RzWoYZGsyMyuNtSCD+10i5JF6mgxBMcwlhwd6FNfCOSkWigzAXfGA2VmoSkIFDQpy+ICGP3UK5H2cAPfsXI6XwH2JooQn8HJ6py+TbIu2oVIAkkQSQqNFWWh02s4FB1g16kIJgNnqrciWSQilC56py+LwBb4VaTRp427BmOFVZICOtKEBYki2+BXIjjwM7UzJC2fjMUAQCUCKxjYEdY5yMqZBk1e4B131+5GSlCL6p8oM2ms8iFeqfKCAxGOFdeR5jcgAHQ6BvkUooHe858iIlzXKB6uGOFNz8ZygFwZvhTsgODra5QX8jEdBTiGobm/IvbQg8jH4qbU1l0JeQMhcf8jhPwBRWfBLLIw2R18jl5FxfBcshTgKBRVhhQGFqmT5Ae40KuRvUgpxAda0VEKvI9dwq/9iVDQQz20KBA6gmKENLGLx1D96sSoShR6oV18At3hIUa+ybyQXJoj8bHuTLkamwXfGkThNwqQKLq1rMcEeRSsw0FFzPg6hB8kI/GQSgpGRNNkMgLKA2r6Ev9dTBLMgobHNoBa6RiU5OiyKJmulS8Z9AsijijgbSLBkh74Nz4vXAsKJtwlUUUoo0qOzLwFFGE6Cwoioo3X+M11T262gP+oG+KYvWALIMcRYXzskB33bcEeYJrfy/cSDZMxARtSnijJITuKL6AsHwINkQzgR1KlSEU6BZcBPWRkg1cROKP//PEAHsq5nQg0Bs+1ggJ8VBe0GetR5jJKNZoFupWJRGrIjyrbjybgA4o6ERSd0L5iMdAKUe9lXxRd6dNIR4q1UaOiyC1uF6kCggf91kSCusRJROEgtLi98V50mAsdYq5Jx5DKtEGVZHJ0XsENJhedYVwj6UYYCTZwnSjgNLmoDmcBkkVjoYyjqdYV41oqGGfSUssmcoBLx0H6Ufko8PuIE8g4D/Mg0SN+CBdKZTxVLhmrAwob3rc9o2AlUqpKIA6UYyGLdS6BBdlG0XAwnkkomzoG6A39Z5KPIuCUo+ZRAkh5WT98GE0vPgvlkzyiT8JPNDuUfgJCfCLiiTmTRKNoMoCoivGw1R3qHmSHlZMEoj88brwjOjAqNdYL8ouFR/iidxARSE7pvColFRIhtuZjoqIPbKOCRxRvYIa8ytVQBZEM4cE2PQFCwShdHGSIFeWFRmG59KgxwPaUWEo+5R3AEhcAYXGhIIPqAlRwvhMLiYPWkkOZcYUMQhslt51Uyh+qTPZwEikJi4TAqOitKVIBS4wSj58SoqJYzgQaCPM0EJn/DRxFgJJKWOiEPKj3DZ8qLeUcj8NLS4qj0WSsRDMtJ4o6S4fFxKZ52LCFZAyo8w2XKi9OjvKMPxDoQXiqo3sPfhO5kJUQKo9w2SMB2VHYdjvFqCo8jOwoZJWSroXMuJKotpKXyjwlG7WUCUQao7xRtSwfJBI8F6US9pFz24ajDVEk6Q89ghCANRTSwjJAiQma7DsZKNRa9NNoB5GxrgDmCFNRJtk01F+KMjUWGo9NRNVQ9/iNwmG1uJcfASM1hzVFIqL94t6oi1RmqjUDDuqLwuCpCND+zbxy1HMpHbtIio5dO7ajN5DyvB1Uc2oi3MILIOVGpySIkNWouUe+qi21FcSyZUQpcU1ReThjVFXghDURw4OdRYKiplESTDs1uRnA34VYgSwh0QgXUQjYE8QClwF1Gs8NgAmIefmUgtp5KHjKJz4BuYfxRZ1DO9YswBysgErZAIl6jrmRYnhwvqeo2PEz6iVZS3qLOZPeow8qn6j0LQjqIGgMSo3vUkSiPyrFqM4QQZrBm0Faxu2BhqOSqg2gCTSbtgR9a8uFZUUOhCQI3LtItLfqJNlH/VKC876iMNHHKPENj4gEk0j6jDrJUqLxlKKoq/QgstByqAaL5gVuokDRFKiooFrqP2tG/xEvSZ2Z6yrCNRR+AmeSw20zU28rYaO7lJ6o/+BZaju5QG/DI0Z4bd8wHYI2kSdqMJIKRoy34PZUGDaCaOQ0RkbRA4hMdgNHkkE40eYbJTRAJAc+KjXn/URp4GpR2+pe1HfLnrUUQfAGqnhhm1FCaKwami1My0IjB7qqIaN+ZD5WFWUVtpcWTsaPrKpU1MgAQ/D1PB7whrxiZFY7aQ6c/4we7Xc0YaPCC4ebJ/9b+aOvThxpMdOckUDgHWfmnTgDtHvW/J8fNHeniwtMS4QjApM4/NF/KI3Tl0ILdOuiQ02FRYgrztunLLRQZV4LgnpyyamenUAojWC+yK/FQC0WM0aUOeFxUPhrpDs4klosPGVTBGnzAQhhGLgdT9Of6cqGgVNQzYd+nXxgb4NAM6AciC0dhCP2AG4irIFMeV01up4QawXeNzM7kalEqB5nQ0I5bI5lACZ1EILLtScQqmdBYA+7R00B5nSCQ7B1cwQd90nNO9tYOgZGdP1gfDCQ5D3wekqn6x+EjlsgBgPvjc7RYvBy2QIkCwJqJIPZoDpRDM57aINPObACTOARx4Gr5MBC/CJ0RGep7IoJwuZyW0ayed7Rt+M18C6eRaYI//LS4MsJBmA/aJ3aIxnb7Rqmcl1DIyC7hPuhZiEAbxLtFNdjJ4m9HZHR4SwnCYVghs9B0gK3IuPF+WRlNUDPPRnUb2+GpZETI8Th0Ty7FvgWKFnWTg6L/kFVohiO76p1viTaNqeNdtGbRdEIIKwOMAW0S5nROgXNpSiqI6JSKEhyDbRKqi0A5IIFQUDLxdb2t2jNxHpwFizgVHYwsTMxVQE6HAV0Y2eeXRhWdVQEa6OshM2iIDimWc5AAq6ImgPro3XRqujNdFHSLPbllMeSgGXJkxgBUFrHq8bfqefqwOx7UjEcoI2PG3RE6wndFfNRdIHFcUmQ8sJcJ5aNXlhLOPbXg2axQJ6S5QyatrCVHaj2dXewmzC68KVyYMYd0w/dFuNRaVuKUU50ZIwmfKNjzj0fd4ZPQdlEw+BugzOmCjdYQctcJY4Bjjw5GI89UrQHE8nRgUzD2zryMGuEb10fdHCSkInlMOfRIoVhyXQI0CDvM3o9o8XoxR3YN6OJaBYOQ1I5TDjDzwnyuSL4cGTkJejh1ioT2EHDLCM2ArUQDBxOnyXIGXo8Lk7yQvpjD4E7IRnoojcIeing7Ljx3aLXo1PRIfk7J5Z5T8PpH5GzmmucObg/e24njvovCaRow+OQ26IM9klPVvRLLs4p5B6Ni9tPo/3RaYkVCTO6JQ8GMgKwUdeivJR8T3t0VklXqeY2ATNRauwLpGKMVcS8hJnTy7/Cn8oTdLrAiM9v3A/RA4nufoqfyXVwyZxeamAMVseUgQYnt4xgBB1n0V+7X/RLvB04R/iRMnqLlavRMwVdYTsFVC8n3gr/RboxsJJOT2myglPHiSv491lhAnxv8jvVBuk7h0BJJkGJbCMqMV/yRBjnGrtJQVKMfo3SstyUADG0RwdmA4SfUIGxIBJIP6LD4OnCBAK090ylj0GNMkrfosE+mkkRDEV6Ke+JQ9b/RMwV1p4KNQd0WFJfKe7+iOAr5T3P0UFJYwxqDZ/EYVTyJ4OFqI+MZhj1CYoJloMZ6ePrws5RzJTX6JsMS4Yj4+OCgfOQU3BxnJvorwxJlD39FJSW8MewYyQKyhjuDFwpE1ZmYBIQxby0z9En6JMCoHo0QxXK0iYiYm1z0WYqFaeARiFrQ5T0QMdHw2n0Jhjh6iaGNcMWZlD3Rhx96MotEjdCBQYttQfHJDDHZGIiDuYYlwG2TCsPpQbk4oQFgJOEjJJQjjMVViCpqmTTkzRjhJT+yAjIe0Yj/RZUMFhBj2iyShDPLXkWSVejEW8n6MUW7FaeKFxhgpEz1l9HdVOsSeSN82FnQCLhG3CazkGSR2kqK0LLIbBHc8SMxj80h0pE/xraQ0aAUyVBjGu7D+aOv5RnGSAhujEcGOgMcMYz5KX081dgj/wmMU4VPzO+EkVp5XnHTcIDjMshq1UZyDfGMHIWto+iSjM92TTmVkI2vLPTmw+NUaDGPGKUzgJJRZoR5CpjG7pHRnnjYawxewV/OBdkJM5IEIoE0yd1kJJUz05sLsYniSoxil2SyGMRMd4YkC4pG0OoY3kImqmOQSTw6exwo7UmPBMYDyQvR7xi2fQXGJYMcGUWX0uxjXNHZyLwQJVyNXkvBM8ICVciu5G0VbTAlXIG/RtfQFMfiaDKUbX0lIDXGMptGnjFzqV2lPoG/43XQMbsdGUOJBPSICJ1+dLbaEci2ewxTHhkUqQFiYvB0jX0PUB68he5LJFROAdW1teR+/QmTsjYcls0jdzmCDkLtMfglV0gHpCKeRyPDqgA7sM0xR+NpHYw1jG6D34TUxgSApTFKEwDMa3sDXoW0RHHYPmiVMb74fxOyNg6bRRNDhMHqQgO01+MHTGy+kF5Pn9TeSS7Io+TXkRviMbyIUx/jwTTHnGLjMT+RAHqsZiozELKBDMfXsQboQBMQzGi8k8eG0gRXkUDoRfIk5xkHEQ6EDWIpiIgJJ+kLOBxcBeSNxoIejbKCQwNoOWsxVBJISqjaMNxoF2PEx1zpua4h9hVTrGYpSA3l4wFDeeDB5N8mIlA4gwSTT37F55KyMIHUsZjtlgRTjMlHEDdRAZCBmgi+iCHkLGYi2QncjrnTpA3UQJOYx3Gk35k9iASSnMdqsfIG6iAzzGIqCVCBGQ9Pgr3JoshHmzrIRDIHF2X5iZzFLsmXMX7jRcxgSA0myIqHh0GuYnEI/VgdfrmkADIaMsJkiJEQv1g/kNO6P48G+IZcx89iA0GaCLRcSbU6KoyJwL5UvMXKqAqwL9wthg/VmfbgbyVkYRXg6yEZSk/HJ/1M78RYhfJy0WMgsU7HZnkmvx9zHAULyeLc+GsgTZDfpB+KAvMemQ+yodZjHzERkP0wIJY2zsLexdEgbmMj+jQoEvYYFi0fr18lCOMxYhEiCk4/LD0WIQsf3wHCxBWhKkBImmnMX5AMixn5isaL7KHz2FY4e6A8adqUBdplUMh/oMyx2TcfECxNwQOCyOCyx2OYrYESjhASCaAkxRFIwFyxcgXHJgNqOyxghdzxCuWPN1l4lHyxnljQibGsnsscUTZMWoCMHwinZFZwuNkQHEVIp4XgX/GnBtUrTywmDN3oYgfipCktDRrez0Q12isoXAaLuYVaMwBZTehnUkIFB9UO7In/wSrG4xFisUGKcaMoqECHwZZHisSTobQgaYD4QyvPDRZpdkYpWKVjGxTvQyqsX28TaG8H5PwK7Qxx+ELkAS45h4X9r9XWUcjCebfMjT5mwLMih70JFyXiYs1j0rG5Uk2hktY0P2o5iOYb03156L6UXhmn7sq0IZjX35q68FOW5wDsMGV5mOsQB7MRW+1jE3gmqnm6BV4Q0KMlBylb/HRbeHa7IRW1l1m2qBrzAVsvwQzBUFjylaRqFbBlAUQdCewcrGbnWLd+MfxeTB55dS9pkiDMwYdYzboetQ0MHKeykVnWoMGx35Vs9pfoGIwf2uWxWZ1ia1xgK2OATgKOku4dQo4iFtS3JIe1Jv2aGC8cBiK0BsYhcaugEytlBCQYKxsS9YvCE6YFw3bBoUhsdfZQVynssWbGfgXWdP+hZ8EfbccJiwYUvEZmLEz4/NjSxY6B2SznzYsjCbMBZqhopiOlCLYmVmBJDGULC2I3eNLYu/MLmDlbHH2ClsbK4FWx5ujbFHXSE0LPihJ1qQCo95TCtQd0ZsUfXu0RATNSm2JThDG1LM0ZHcY/AKtVnlFp3D3wcGdeG7GtWj1IMTcLmW8MVUj20g2JB61GVq7NIjbGA1E30Q+aEPuwqgLWpX7GFqOnxVlU7qtQ2op+kdahK1J9ihhg1yDfqh9sfq1T1qo84fohB1CgaLBxG4Y8R0E8DmoSkeA8rC2xBdiXZDW2IOAdXDGVqWcjvVRD8Fvaim1ZSRPYj2VagFHojl2KBqIS2Au0I90BCkUe1SL8/B5N2qltXgOPWaHXewbIxPxGJBQ6qEmIvaP+4/0K9xlzJuPYuyRs5RV/6RmJHsd21UkmA9M5Hzgv2K8g+aQl4m7VR2rULnbsbMKI2AXdjm7H3CgA6gOyKcIDdit7GQsWLcjB1e4BkuwY0I6TjnsaqMBdqqMA+QHrsmAUdW0C+emtJccintRcHsl+ddkH9j+2ri4HB1s/YhexaJl3Sb32IHsWfY+Wkuk5N7GgdQCoS+hWdqrC5VXz9tUg6ncwSsGl9j3SYceEuAeC2eMm6DiQnqL2O/sUiCK8GrWR/553MDfBjtGECG8tIjRpttTvsViiIqWs9jCSagOJXsYgcQ3qvKoF7GkDhaXI9gMEBO0Y9wG5ICacBPY6KwnzNmHEEdTjBvAcaSCK9je7EQOJvsZ3Y+BxwopRHG5tWIcW+1Rux8BxOID0PmHkvKhbBxDdig3SXoTUcf1wDl0RZN8HH0PlYcZOyRV8plRYIbkONgcZh1NT8m4j1DhkdXFkgVHPCsVHVnxHbt1fEcbGKxxghZ+OrlnjcwNY4/Bew0kwZLa+k8cQoqOxx9HVDxE3kDUkIJ1RUBATiNd5eOKb+nLObFihPRcagjzhkDLE4vz+jUUEjCYwycqPQwwJRH0JDZyz2klLGldWuKm9FxJjWpG7FGeYKGGWTjt3j0Hn7+FdoF4w6UQVsR72kkgJNkcWKmbwp1JvdCZnPojJpx6Clw27MMNaEoAiR1iVTi0BLKzgT7tLpGRSwGQZnLFOPMusM45RhpyjQBL9OOycQHTX0MjbcMnHy2B4yBq8FJx0UtonExt17OGt8cZxs9oTxAeKRHio+yeqWDcULXhtOMJhtZ0bZxdhhA7xFqV6cR4pQ5xjTjTyYtmGNGEc46jE7ggJ/TcZESsZ6gZ5SGziA6gMRUScbzUMuKwFh+DDYVC97jZpPHoyc4vW5eAJmUjZFCNMSnCka7sMLucaVXCPuWNNM5519yopkJqSpx8rt1KjqfARUp84vt4DEVXnFJAifCrL3ZquMLjtnGOSnAguVFHjYCNRB5ZpqQpcRnPKlxarE8XHsCwacfO8Y5xts8lGQ/OLqMR8TNwGY2jCsjbniWhFzrJFmwxE1WL3kI7nliiCGE1Pgd55MyA17qt8OJmNcwE7LCuL+ZmhnOrM1N5gwL8JFPDDiQAeeuYR+5H8QBHnpq4h5iv5UGwYGvFVcYiqSqcZjNK8DOvG8FoO1LZhcrjv3gHz1+kFK4vnRYzNiM74qhvkY68APqX7wtJwTD1s2Hy4pbEaNjkNh6uJ9cfxgv1Im6YPXFRtyiDIEwl1xIFQ75HhuMJsXlybj4YOUwbEbzG4zIN0ZH+plE01IUuCQ6qm4oVxHUpUAH7/F76vtmUBRntQnAzkfEi+GZgyVYabjpXHXZHfrJumEtxhoVoWBzQnFcWhgvZwUrjmYA68n5+BXnYtxrCjE3gv+zX9I+aK6xsDptXH/oOTCtxmHxQGbjGdRxuIDcXdYp1x7ri55HP82GOO64iNxKRC8wwy1jMwW4UG/0Nrj8MHMCCU0NtQlNxkSRiwwjuI0wbu41/0J9gvrGbuPHDKxxfFmVbi13GCDkHcc2UJXQjqIuawtKTncRf6J5IAYCJoCryIHcW9YsdxZWZz3GdijiSE2GRx85LMRWZSoE2zLZQDgUIHi4KLaKNGgo4IEDxyEBZ24P+Eh0C5gw4aiWY1rrD5Bg8cYogKxRC8kPHkfFg8Ra4aDxc7xAqi/iOmVkhbSa4HHEeERPdBNvJCEQnBMzhNx6keLOYcUuF7oJtjoOibjzDQKhABHoMTNaPEYRH/bnE6C2xhls1GYseJ2HLbYjDEmzRBgE3RFvRH8rJviajNBID2rDkdoSzAISbys2PHS7SDsUx4q/SrGdIe4lyzE8WbINW4u48nXbw8BE8VhPMo6RLRKqqZd2CZkcQL9omhIOPEF4NxuBZ4/Fw8NwbhLc2jWuOagKBE/EAHPGKGLxlCvQXpmIndXHayeKOQZ0wWK2oniDPG+eOlAYhUP8IyworOgqT0rUgV4MLxCk83MCuIg9kFBPKTxiKtGmD+eNqQGXOJkEEzMUvEyKzEHB9UaTIA/grrQGgkU8fEKBIwrEoMvGrMNW6AdQ6zxWBFKJRh2PU0e/Sfjx2UxjPHceKvpCaDHNyNngGAiGTwtsZvRCIUlHjHPBKgkV6BZ45/ibVxbFIKrgB6MfTYRAvq5negxMx3QJ6uCbxBXiEWjHUnUnjggZkgFXR16QxeOHwb140okxJjBiCBgg28aixcNkuNEWvEu6Ma7iCzLGY23iRtpvGKpgJTMIpmCiIITYn0gi8WyJSruSRIvNQOrE8ngl4hTIMAQzJEleNXWLJKT7xwsBowQ5eNzXOR4w/Si3iMyCFdzb6Jt4nXs39IraqIZEq8Y9tVZBfUx1vEmeK+8TfSCzxe3jvJHssm9Ej44ZqeHHjlyAYyIMdP7CGdcuPiGPHywg56J9QobxNpBMbZ90iqcVUGFxgdsxgRxBwkx8fDQ9Hxa3hLQTwMzDhAfYWiUP3jhYS0SlI8b4FP7x2W81vCA+MMJKp466S6k9OfEh9mK8b4Y6I82VwCpA++RbmP88DTxiSU5fEoSh58cPTK7un2xJfHU9mAlCV4+r2+Xj2drp+WPJhiaMOxxcJZQTHeN5djiCA7xiSURvH/6StGIeolcql3iPRwW2LHsLqDfPqdeCjlB/whd8cQrRWYHvi8vHAgicINYrIFAheR5/iCqz+BFe0DrxrtCBwb8lUDXIAoVYByPRfVzcAnMOseYT1c8fjaqizWDm8d5ZVYBb9hmSA9A0cSOd8VxE2chFZhAOAEVpCgQPxhZRDphEMK9mEH4zqY0YJK/GRrj1zOw+D8ictCHHzKOFzXMooI2Ymfiq4DZ+KBnrnoqmA0YIGQEu0Oj8ahDV2h0PjO/GgvEz+H1MVvxrss8/iiZE1zB74q2hciJaShK0I5kS3kQLQ5fiFZ4dSljXMSYUp6s/jvSDV+IX8WjMe3xfviqnpWH3NRFTDZqEhMRTrg6Cx/ijzvNNQ/HBdGKZ7zM4OdZc/xfFEVoQM6gO3jtUU6GXuhKt6n+JMcvf4qGg/WgvDgWgiWhtNwE7iqHAGEoz73FBBSEARKsO8v86lijgkLNvUVIxDJabxaU0vhIglaAJO6ghECRMVK0PrTDAJsTBKODktwS4EAE17wnlEdET2MgACe6cFji9/if1C+MWv8RXobxkZATj1AuinysiAEn3WSmhjfJo3AehudCA7wb28qAkVfw2aJlRLGG2eg/t7EaDJFKxwIHeyMNKOCq7xICVNCLAJq28/oZwSEYPjG8c/0SATIqbbLAhhMoE23QHASr/F+7yPULCUGRKUu8rirPQhV1PoE1YqOgskuL3+Lx0C1oCWkk1EiYbCsTf8fPoUgJNAS70w6OVZ3qsVNqGwrFzAlTQyv8ff44I0N0In/EbShsCdpxYJUiMh4rET6GF3vdIFqxtEgYlThBPsZOoEzaiIQTsJCvUWhholCGQJuvoTyS+BJt3vgfTwJKupNd4b0RQCYLZRwJvPoanCg2TsCU3saliOrQf6IcBLIchHvKGm0Upsgmq71KCQ8xBIJh1EiglGBMYPihxEBKa+8fqYp0FgSvoEtHYM0p5Aku71MCSrqB3eQ4cAgmCDFD3kkEkByoTpw9iWBPKCXTRDQWx1kSgmK0Dv8cAfF/xqNkXAlwmi1YkrSZBiBfM9WLqBNU0LsEjzQfgShw6qBI4/pysX9oXfDUEryQEydJUEwIJFwTEoZ7BIKCZcEx4J5e91gxUG3SCb0E/00/QTtgltmneCbzoJoJ2tFmRQDBOZEQVDERKnQTP5Q+WViCaLYRcUwIS7aJFA070JDvWfe+Qtk2LX+JuPGsEowJre9pZgcMn2CSocfRE2nF697LBOJ1BTvWGQvohzNBkBKj2ECEn4JbCoQglUhNt8Xxrcz8D+9HTjxWO2lBb4ZKUj3BUpS5UyelLO+PQ+40p+2gchLeuPwGftoPCD4FhchLjfIVvANwRwQCHjgLH+lNfUOqUudNMbSz+ClsG40NqUs/gqrAdUxlCZJ+NA+5Up+pQVOFIbh/MWhIT75GG41Uz6ehNKPA+SxRDVxLtH5CR3RDUoJPDGQlnBFWlKTwaQ+G0oPgxpfidCbtKYJEWH4seJHSlQRJO+M/aVQcbQm+hP/GCjcGYMLThvd4GhKp4FaEih0fIsYh4SHyk0F9KSd8Fh8y9i/FgBlImEqQOchcblLLgioRlyQW78b2EkhLYG0ZDKddS1elHR4fqXXSLCaJkHMJtZUywkbrnIEMIvWRo58QcTC60CoRq+CBsJ1jUiLic8hrCXrUVAhG6AAbqdhN7qjS0e0hyakluSX9GMaI2E2Ah6lUbwSaUgrYeOE1W6VLV9GDDhN13HdQJIcm94WGj10HN/Hfgpr62N1ewnrhN2EF+pW9exLh2wngFHqWM2EuQiGwliwk5hKmPvYjasJWYQM+RzOEJEShiOSkyzhe2zrElVINoOFgYe9Rli5ZhML9BfUQCEhyM3NyHpkGEMEJYWAO6ZBhDDCVAIR+mECJSmQvYCm8AIqoBE11Y3ghFboPCD7CR7AL0hjYExwnIRNVui+Enoc84SDfzcNRXZNOEwah0q91wnoRLnIbqYOC42YSGwnDjnKcHeEvJ2VogzuAHhLbUqBE4bw54S21LPLzPCeCYaagN4TfuD1hPd1pxEnthzESNzDsrD4iQ2E09M2iMwvCgXDTwrZSPywlVwavh9AUYiVTAEjMF6k5Iln9EW+O2PeHGzsBRhAiRJHYf2Ey7Klm9smBoPVzuipSIsI+kT/KqRLyUpNxE5U+sQlLmTdCG+MGJkYsJ6IEWoinyko6KEILPCtmt+BBHTHAiX5uXiJXsANImThIy0thE20+lq9sr74RJZAgcJc/BKkTN6oDsIXtN3dQFedVgi2ABX1oiQgbCy4bukEolcRJAoP9QmKJ6kJOfqygV0icWE7/8Jst3aYFhMVArOEwLOhUT3jaW3BOlOZE7+6eJC9In4RNk0tVEoSJOVkoCqdCG9DO/dJqAqlDpIk35BREW5ElqJ2lD6onlhIbCaZsRQSjcAoMy92COXrRfYKJ+6JBIlMRPYiXz5SKJ1AhEVLH4KiiQUZSSJJxsJokz3BwISpE/NSQ4SlonsAQzQL/g7SJseoShLTRKpNsVE9A2xES0tKGL1WicRE+H4n885wmlRLxqrdEpyJeXQLNFaCWG8OxGUiJVET7onRWkuiWxEzL+nLi5GIt4kcidLwZiJwICajFhoH5oO4ISiK+VAQYlECD2zuDE/Pgyqdm+DQxIoiS0MJGJ5wkxarHsBaWPDEqWqr0ScBziRIj/DlEn6QUGYI/xJCXWWA1YXqh8Agp+BPSBUiTskKaJt5BRhCQfDRRnxIlcJ4EQoYl8nAIaLZXYLGC2UP0y86QrYAzsamJSd0+YkHDmxibzpevmg+VxXAHZRiZOflf8JNd0yIkAe271kLEjXKzETsSCMYyBkMrEpgQ9GhmYm360TxFIIOuYAV9Z8RLVWlgN3dXX4dNhp3bd3T/5l4eVUCisTRDzQROvurjEhkUnDQRNL2xMLiP9Q62JGH50QIiRjZiRLEnHKSGBgWrYxPHukNE5GJOVkgCS6xO9iSu4Z7G+VBXBBcmIPeFd4GPGHZEec5xaD3lI+RPXOYzongAB8RVuE4cLqQwacrXCrynCGLycf7shPBiirBNDrOLgXF5hSHNiSTsJB3ZJiMJwE+Yi92IkMRMBDnE4diuphy4klMj1VNCwFgEI+JJVRvuLcTjEgoraZ8xzvAJxJ1pOnEweJtzdBAS9xIEOGL0c+YyWwr+B9DCGIk7QbOx4aExyLzxKhPIr8W+U7DIatqLxLMTo3E4RUwyIlU7rxLWsZBnPa0PSE94m85XlQktoFGcBYwD9rCgUjzAWMOgcA7IzihUsAtqPvYyi6cQl9YRN2NkcBIJb/098Sl8zJnGJ2jtoXeCC5wWbRaqmI2FGBbVI5zNyeQ/xM1OJEwEpAH8StzzlYHlBIRHE34B0cxaROflkSFnmOM4STNr4n6jCkZlI4lLW5QxmQjeMxLsKTtTU48NpVI5tzBM+pMkLpmoFi8YKanARINvYtnW+J0cEkB+gQFG8dJhJHh5PfK0JMISfogDjYypxSElH7wviY3cYMM/CT3lRctBEbB4eHhJC5wCAQpk3MsN0EW+JmCSHzTjwTkSZQAh80uBdFcghMyQocgoDBJ+9jVkJtJyRqER1Dr8bz55hiipG0ARMwIxJj8gtdEHiDTTnmHdXRliSExbmJKCcZmeWxJ8xgTEnPiCsSeWHEqOGHi9CrzDEMtgoqc8QbiTpAEELx+8qZlT5cMhhaai/JQ5pE09MJJIf8+T7hXSwlFN8OZMUSS4UoxJNYKFckD94p/MmyjhJKduLnzBawnyVPaoHA0FFu8YgIWDWoY/4mdk7ZulYCSSNa40RCtNjAkhLCXPmHbxbkpJ1TwBvUkt5aySTFIJSUxrWnUmZDmn3hoqCdJN6MCbCfpcRSSMmpEtD2CFQTFJJ8i0LBxQgywlOGETPmGSTlOTkUF4FgUkkpG6IZ6OZB3iJqMvzK2o2swvKC8CwIoIctWpJEwshklXJH2kIMk47WhySFYTj8y/rHOkbcqpUFXjDPrSuSf0mcpJso0zkmv8xeFvd4I5JnbNmklKrSySfskj5JmcYNMBrsxeSQkNKsI1lIglTtJSmfr4qOSmFgVfj7pQXgSdVyKFJjIh+tYlGK5QspzCSeRq1Rkl/XgNSsnCSZJYqU5qgmfVmSaFyfWqUYFEknRZVEoJWIGFJgg1eqpeQUQnh0qKCx4ZRh8ARKgknMPzYlgeg0GUmlQR+SbXw1QmZSoGqZbOBiFtFYOlIjv4+hY3JLJWgSkt9mgqT8ZhaoWI5mSk6LKjSTK2aLJIBSJvZRrmSXJ5kn0FA2SUoNJVJjIhRUmnjXlSdSIItwlL9YSZqQRoGqRuCVJbKT4XDApOL4BOlElJ2HMAUlJuDhSZyk15UFKSRUlm02tST3jN9mYvBO0oRJJBjtGMU5UFqTczqLJJFvs8qHJJNKMYknVXXjps9BYXyuZ0A0lVpWmPqZzD5JAw0o0luQQjSUhNH4W8BiG3Cj/m2VHtCVZUaqSnIJ4SlTSUkUIlJUbMw0kBc0CFDr4Qgm0ccsabFpKc4eik8bmlrw+haJkGA8DaktpJDswuVDd8zNSSuzCZJkl4y0mY8DuDGUqdpJSAFWBYPJPhgkgTdj6ez5DUkCc2NSYY8ZtJ3bVBqKjxFfME5BLCUerxnlQIpJuHF4fVG8+sF3UmMiATSUAMCdJEaTbfHHBD+SRoMKZJ+RcK77/cjk5M9OEAYkvB/EbHTlL8nLwCwKDYRchjnpPZSrekjgY96SLFp4WF0GFhKNtQyFIbmh4ShTSE5whnm7XIXjhXEzvKpZyOd0gGSe2AKBRrkI35Qv0aSps6A+eCD5FatS9JHgwM2w9I0fSf/0JDJAiQri4E8zP6PSklDJugw8JSNFzP8srwVD8hJYbmhYSmiAnYFDh4MZAibGwZJUiBUqCDJSAUA6aSDRLSXYMEZUVGTT+go8EEGq6XE3meQxw3DPF2+5iGk3EuwgwaMlaJHfTG7wr9JmyoNaDw82fSe7EY/ymAVCMmuuFfSWJklNJkSJyMm88EuVDBktjJN4BblQFbmoyabwWbw4wFyMmWQGVZhtgLiCcmTW/DIUmqGMFnXd+H2wiDAwpTe7ojscBhJZg325E+MfbvV3ZzJvNoeVaGaFzeE13bh0O7lcHC89w88cx3VzJIXjgO7jdUkYnp3HegpNMlzDQdzxYZzRaZM7mScO4KaAyYZj3fxivmTksnBMWXmPFk3OWcTpPtS9+mK7tlkvDu3WhEbg7ohVoXOwQzxzEgDaE6qy7WKzQlju9PUxO41ZIfEEJ3ULJB1hzGHgd0/ls1kipK/HdmmCr2DY7hloE94tWTmO4ydweYeFk0rJnTASMTydwrCFkaT0w6ndAVYFeHKybRlDTuOVhRMzQWFyVqxiaDu2XcHjR9SGQ7utk8FhUrY1kooqxuPIwsdzJ22Tn27pOnWyYgqajMjmTx1SYeVc7mz3PkCcmY6u46q07cuQpFjuQlhqskMd39sWe5a7uTzFPslM9yfYmh5RSwiWDG3JrJXi7oSxen04Pdl1RTZPmyel3JBAnmY0slhANbcnl3YbuGTB7slFd1cRKh5RbuM2TSFQ/ZM27unYuDy2ikWO6zSESJJz3B085qBNOiHd0p0U/MQWhu3dJWKU5KdoeV3EZg2OTke5rCELctp3XliGWSwQy49yUFFZ3ObuTQDFu44d3pqq4pQzqJrEUclld3mFDaSHbu3Xdi3y1uTzMGh3JXaiMA4e5NZN0YOd3AnJeOS6u5vtwhPKYsaJSvndDaqvdzm7v6xTXJl2S73ibZO9MNN1XwUlHktkoSqyGDLTkqswhvcNcmPdzsyenVe3J/zD1gxtUkW7sdk5uqCuT3snl1T5yUjk6uqguSlu7taHMKOplTnJ4odTslY92+cMOQAnuunxXgYRmRJ7kXLbdB5PcPMkShFEWBzknnJTUcwcl09zcVkibWbu9XdOTbK5NuyWTOAbkD2TjWjS5Nc7rnkqJY2mV4e62+JNjKL3f3uf1gWsn6MPVyczaN3uYvcqC4OMSD7kMeIvJzDDAO5TXClcXXkvHknjDW8kA1id7gvGZ9U3bx7e6CuWY1Gn/C5hCudk7Gslmt7iwRb2x4+Ta27MhSfYlb/Q1uxXdJdgOMXd7g8YSsx8jDqu6y7DRcWIgKfJ4uAve4a51lYhdkxvJiWDK0jFhjryT+qMj49spfBTqvAntJPk3faSWS13iz5LaAe/kwduM3ErGDr5Ldbr7kw4qtTivFawwGN7rX/a5h7A8RxivcGJVNKIX2J5mpaQQoal/MXMiDbI2M4gYgQaBSpFPk9GwAlcYfEOnmY2olaSvkiHc8CliWmI8dNorApyagJ2iksUpPBciE9oz6okClmqALCMAgUQRgAIECl9sM5RvKpGApbyoeJgMFOOQKxjOf41HjedEyrHIKRi4Sgpn+on1AkFOfZKIUvgpVnZ2tCK/C5ic4RUmc6hxFBK7ZHB0NAgezGpn9UCkoMSgKSwU0/apyMxCn8FJdJIIUvgpUQCvUTYbmktmVglJG9BS8agukl0KXwU97x1hTSMbsFMC7p6jIwpm0wU3zCYxcKfzQnpoKqNHClAtG8KdAU52WECMyLrh0L7EBYJZvkKeg5QG4RWM1IXOLaRt5d4CkTeJk/LEUnwp7ss6ClxFNXcIpgdwpIfRG8KKYCdeHoU9HBJDFc1BmFJI+M3qdf4LBSZPz/IyMKY0gCqotpgQ+iH5h+kESjIrIxeEzmHO1mYKZIAG4mY3JJxiFFLj7s0U+ApHoI35zlFOWyJtMSuxs2DsBqGEGMXL+8fxOQEwSlQLYLZ/oX8WoeIS5mny3IjmKV0A8rAaikbziqqEDJOp8XcY0yQ/5wJvjskChaO7IFi4KmpKKRZbrYuLJqxxSXUqwLjGaHsUsv4XoJSSb/fwitM3gJfAzrFXHiMbkZQt4uLLA4thFik8kOWKXbAWYp3xTMQGYjEnGG8U74BqQJD/gQUHoXEEKOAk5ahwSkAgK5/pGqYEp3pMl9gQaDrmCEuHVBJPALxSolNYZJeqBEpGCIrHiJWhhKe6TfOonqkER6+4PWwP/iSYpoSRmpHQIm6ePiUx0IhJMEXQg7Ag4ZiUvggQJTYwjKJMIRJ2qFEpjJMUEC/Li5KeCTLbq6Ew7ICck0KPK+qQsChJTdoLYlMGKPGTUJ6lGpxupP2JlKbSU7sIRZNWKiSlOygPw4j1CIewi/hjFM4+AKUtYpC2CEiStaiWKeCTF0xoFojSmvBiBWFsU3l4W2CxDz7FI51MpIxD42ohd2G+fhTQj5IOZEQKcyyagIldKWaoPk4y2BuZzQ8E3VNFIaUpjMF4Smw9nFKRaUh4ptRNhSkmlMFKVqofRJA0iLUSzHQZ9k6mA6IJC8afaOOPUAc1QBMpJC8jYABZEEEVsAOH2qoDaYiplKJ9s5kIsp+ZTesCFlJTKeWUnMpFGE8ylQAjO8oEkyKxrPgUrzzENocPRQdJkUoA8rTG+Th+MMyPsiYlpuynpMhFkD2XSZoBaQtobK+CfUF2sJDsqzlmCjO/SaCJwoc+IlRpiy4IkELOOMcPUuI5SyeFDlNkyOuUnX6OXA37g56Su4XQoVPWWZcYvFEV26UEeRY5EAMBZIpmoEe+jRiOKCCJFryl/lwSCbbXeuofRC12A+KCharygFsuKQlQG7YPj3KQuMNr6m5T+ylUtFHKauUlC0A5SdfpieD0tP+U8MiI6AqFDr6TmUJLIzspvy43nzUIHDIm0APC0T5S4frj62PKQUEbFqTmowyIXlKA4VkoRyM/SITyldkUgqc79OAeevhQKkTlOAqTtcceE3REukRpBGwaMxwTX625SnGjgUSYqeqwXgmu5SQMicYmkbp+UkZErGI6K5BzlfKemiNuOvvhzyln2EEHNfjQSpBcZezjyN14qeWoA7w8DoOKkUkWjXE9qcBKEJpo1zMVPu+r7eFiu4FTJ66NEPX0taISx4BFT4KmqVNnnLngeSppQR7G7b/Q00tJU8eou8ViSLlqHEqXhUlHRGFSlzAiVM+UOZU/ipj8VYKlV/GYkORCMRQyfAWK7blMgaFY4PMu1kg4G7REE4qW2UxQhVJBDiLFl11INxxeyp/6QiAnZ6glINhUjSpplT1UABVODXHRUgdWetAwKmFVKfQIBUnKpqVTIqmUZBUqQ4Q79gdTANcKnuU8IcugK0iYlpGqkjYDPJi1UnSp7ZTEKadVKqRN1U1tAfZSmKndVLCIWOY9/YZ5d6oCu1y4UCDQTjC+XAV144tWsqe/GH3SOmopKmgTBiXg0oTsifa4RzwAKEGqdXJUTe0ShjKknNRAqRlCGXgo8ks16magqIfI4Ps4bX1myhwVOK4CsJbapIREtLR2kB/KTCQIwg+VgeMQ7lJWqRkobyp/IwFqmhODWqVNUu4h71TJoQKkRcqU9U2vSdQd/Lx6lysMJjE/eoxVSty4KJC7QG/FeHYeVou4RzVLmZBdUjKC6DcMtRJVJscBB8AU4Q0JKMiodgBqaQef40Wlp+Tg8dAxhDeU1apXaBpFH03hDRCKrSJu24IGamXKxZIfIlempjaInJJPTgrEb1qVmp1admalJokZqZZYqhinNS7JL81JFqVNqMWpxBceakLai5qdrY+82W6CyuxocLOWkwCLYir4gEVrrLzVqceITPG1OQtamf3wgZj8KdIJP9VTFIzLQe4mMVIxmfWZ0BinBCsUhMtRngPdV2dRK1Pw4vbUs74yVdguGthAe1CcjeoibLkHtTfrUpckUtT2oetTuVoB1NO1JuzHWpvtSm4g543mZuGPFX0/qQwv6p40dCaXjTqW3KQc2b92krcUO+dkJct5tQzp1IjCZnUxcoGn4n3zo4DAziOYw+JrvEBMFd4xVML3zHG4XpJpInKZxEwTiVUdhKOo9GD11J89HQCYLGxXD9oD4Z2jmE4fG7gliNxxQnEFl4GfjN4W4D1ZeCH40cqActM9oQvAD9ptjAfSJyVSdhQnCzz6oEzZiD3ZRnQo60JeAd1Kb5DgqCUqbIhhbKb1LG4bewFHUdeRb8Y11PS6KGYJhAY3C3Lh1A1Pqf/jCJ4QjMV6lH1I1EvPU/0pY3C1QCKhRXlFvU2J4a2AHm6r1KniM75NsY5X8xuEd2lpED/KfE4q/R3bSjAkSUBLwFkItdSCtzXaP91pQYOup79TWaAuQSe/gA0t0whDMqGKlXjtqaoTDFxKDTSeArGzV1CZ2L0kn0Qt+Y3CR8zk3EVD+13YyGkWJQdMLzY6TkjX5psCzVAh6DrxBhpDiTwcTMwHoaV5YmSGdDSivwsNJfERmUrhpTDSHeAv9A8wew0oRp8dQXMGiNJimiI0/c0F7gEiYRWLybiAYO5qeFpHBj1ELwpGxaQYxTH8irE+/QHTpPGY2UOAQLoCsy2LQFBUjF6sxDSaRwyluMv7jGOwzDQq/icz1C+FxtQlcihDAN7yEKoMAsPHAGNdZaLQaNJS+J30cmQLjS1CHrXUfgMpU5eG2hCsVJ6NM+bIAJDvwZq5PGmE5C0aeTU/CAv2IprCJWjCaW405xpGIJ4HTbN2PLFXGRmerhDlrpAVM/YHF/E8cwjE0ake/BTHJdpCxpxTTAmzhrk8aSNU8gh/8E89Q1q2U3nVdcLwgepbIAxCQWqfxaRYhsHo+iHtNL83jxA9cSIgwEiHRKkeqYoaUTeoxhrGnC0HYiGUQ2om6tkgtizhIesAk0tg0gCRVGlviCoUGGwBKJIKwUrG0GhC9AvxEaw64lvIw9ENpAjsXc1gHTTKmyUEKOaX5va30/7o9mlQqSSYHU0jkkEkteggXfR7ZGsQ2b4TTSiUSAkKpaAiXDaYkjIRshFWOvdGWqLYhJBxjDSLNIgBsDwDzYHNIL6rhpDuISXqLNen2RjywK/SPAo8Q0FpgPpungZb0BaQr9PHAnxDfmmB6lJIAdCf6QSxc88zvNNYwNM0wdgAzSHmkK/RRaZIcUtSbTSzmki9GYoAiXGlp82IuISBeiuaQjCDZp+7oWyCtCQWsDZXFGi91TrNTzEP/ujeE8rIETTwy7B4ElUly01w09TTHLpjNOaaaCQopCXP0CWlZLwn5jsXBVpIvRAxCUEP6aYYpbpgxhoKWnGqTYQmC0hFpurSkWkzNJhaYBUccp8Gw1awX1XxyG00/76shClWlvfWbyssvACggXovmkAtMDsCs0m1pdoZxWm0GgtaWyKYVp0LSkMB9t1LBOWicHopJDB8SRogAjGzUgkhQbSk0TVlCatE2IaNpvhoI2nUJ0buMG0pNpuHiw2ncaFjaZG05LOKbSY2lLugZIdIiPNp43hs2nphKEPPdIanktqp6bTltNV2DKqMEOfqB+YkDYTp2NDvDYcWRTQZAAglNyqfhH6m2bB6s49YUkdHkCHIcUeg0dhsqxyHLK0RHYrPIW2n7pi/oRsOe7hWHga2kcYTpohqAarOwWE/tjpDkMIDAws3a7Q5/yBw0G8dNPVCw8rRgugn9tLFkLxhX3YkA02GpTOlJ2BLvXMq5tAfqZ4gmyPHkgDRhXQRJjS9knXadW0pdpScBQiJqPE3aaaMc9pSRJ0hzo0BmSn9sank37SFDq/tP7CAvmT7Y47Sg9E/tMN0qrsYDpAAMkiTU8hObMExRdpLSxKNry7EQ6fqzEfYKHS5I5L6BaCBIoT/89Oh8Sp8qy4MaO0qh6uCkZDHXe159HbvfJqjRSEOlzGknwkG1JHs4XIjBQLGho3JkHSTaoHSKTxSYUA6arsC7CuehZ2kFGhSMEngKdpWTU4syftM8CAx01aiCi1kAjUFkp2PCgRE8I2F0OlzGhGwszsankm/EwQ7YdNf4HEYIYp04jJvrOngnpvOI/Iszv5wdFkDHpDvdweDE/poJHj7hzVdIZ0/UOyp4vtH+mmhgEP+RrIwZpqkir4w9Jo5qHm2xwdhHyqngn0q0EAWqej4ZjQ/9HvDl3IqRoHlBcQ4ShBc6ZE6JWgIIds7ymnm48WZ0nqYNnStiTMXCFPHwoD40YWgQQ5p3kidDTADkOrDwrWFaA1hDsLwVzpMMhvg4f8nONBzbFUOwNNejq6dNGDunIUw+bnTxTxWOAa4l50miO0FNInT0kBAabswP64OXSPQ5A8BQhtw6TLp3OcY94ScDK6bU/VsRqXTXjYQHjpokN0142xXTeukQh0toJ50n/iLocieCCUyC6bWRC4OGVMbSrLFAqeALVIOBYXTfiLedJa5O9taIYYodaTYOdMr6GAMc7pMVNBdHLFEx5p3+ILEdNFqSDL4GR/AN03E0ytYBar9Uxc0R1+Romgo4TEl/dIqjgEk7xxfsZ+6Sr+Aq7lVHOyA/3TVQGA9KajtoAsHpM+xxYysNOxKM6AGqO8PTv9TimjHbvI046RVbRhGl6ehj8oIxDUAYfl2NiZUwgGP/GAnpyDEETxpjXx8IIxTEEyqAaek7BP4cBz5GHw9wTPDzYwH/JHB0PHpFsB4hbQOnjqPj0m6C/jE2ekXgGk2FTRVIAoN8FNj0MTp6XmgEnpvTEqemY+HkeFrvW48ffl2yj9sUqPGD4JfYdoijDzy+Wn2FkxJxywvSVem/BLhYP0TDXp47EYTyEBTnYmVDPQKFGxDDx69ICjIV1UihJQsu/LX3h5pO1CMHww/BptD5yANvjz02hU7tTiek9lF+Yk5AUVoLPSl2JBQD0Cgz0oBUgdQbfLh9KcOHjAcfywfSyjRi0lb8v70ivew5kH+je9ODVE2ZNPp9lQszSXWS4gDL02bJRvSK77FC2vlIkeWKATGwpWGW9NHgOX0vQ4gfTA2jF9KMjr70sNo+fSSkCzGBKgCL030RpfS8fAG9NI4mb09XpK9I0alh9PCWM+qLXpvCAOelT5Nr6UwFfyoydiielN9IdGIh3GfpefSLhiKdwn6fr0ujYkrER+n69LZGDBqUPpo8BrellMF76Tr0rhUkfTYoCH9OqQLH0o9JfWxNaS59M36fb04uhJQUrNi4qhEskF4avpuSAGYCN+SE2PasO/pWfTYKg+9M2PDP5MfplCpz+k5QHj6SUgY/pXfSTen2+iAGfr0/TAgrEw7L69Ip1jIUp/po/TdoLe2KyPD94d8wKQo1ZI+eHT6VmyX9JAAzy2SZ9Mn6VAlGDUUAy++lSCjl6fr0iAZOrEoXD2eCH6XLkjfpiPhIcIukkrsvr0n/pqICWBlg+CBWHc0L1cPrQBem9YJ36bQMhAZ0QoKBlg+BgGfeqW6y0Azf2JD43v6TcMbOxb/Tn+kK9IK8FgM9AZS/TptFoDNoGWv0wLR8gzkBlb9IcYIQMwgKRdI7ILG9JXpH7JQXyp/TqBlGiwZ8kXSFhSvAythhy5JX6V35YLqRbC3nJu9P1vDqxW3pzfSLBmD9Pm1s9tEQZ7fSoySkDOj6b+8WxylAyV6TPVEF8iAMiLA7hE5Wj4DPWwDQM1gZCXUemoeDLn6YHkngZ8vkX+lxDMsGQ/0+phoVYYhl2DIODAf0y/pOwYQhkU9N+aKQM8wZCb44BlWDMDJNoMm/p2wp1Bmr9KcGf0uaykrgzy3x89NrgB/01rBDQywfBsDPF7ngM5PpQwZ9BmI+HNYqawOPp3fS+Sb5Hn16cJYQ5h1WtoJov9I8/EMMoIZVuVhkxkDLlwX4MlIZzc4GBmdDObnAv0yQZsWgj+5e9NkGZp4jGGcN96+mo2lmGfZAbIZGJJW+nADPyGXIuEsIYbQ9+k3SFt6RUMtmQn1klWhUDJ+kNf06oZliIqhmpJH1QoBEfoZnwy8ZQ9R1uGcCMqzob8YwfBCDMlJPEMqEZgHEcJguDPb6X3OR3pEvSI1Y3DKmGfrMRFcoIzGhkKIgFfn703QZFK4XBlPDK7EJYM14ZvS5jBlByCGGU8MwEZ7/T8hmiMIeGYv04gZmqsthnd9NWIOsM4EZ+KhO4zDDIzwYn0//p44DCeD3TxkGVwMkmQoK5aRliDL57vFZDEZyCJBRlZ9JJGMjIaecSfTMRhOeKV6cP5IoZrutChnAjMH6Fb01kZ3coGRkGDOXoeiMu3pAzROQyu9LOGa6uLIZwcgRdyOBnJ6UsMuNcNozjhgnvHEIJCMzrYLdCVRkfDKLpMqiNKEpQyl8GFOXN6TVMJ+hpngdRlf4LBGSvSLNcCPhURlLeDb6dn0quA02ArArbDIjWBIMuEZgSI4CFR9OjGXPAeGOogzP2KYEIiGZaM/7wZvYcxmaDPTGc6Mu4ZiokbLI/DOFgImM14ZXPTsYBVjM1TPqM4NYQR4u+m6DJLMqaAxc0wKo24TepgKjo+aBdgwsN/LEiF2CcXuaYFUiqBB2xdjPXNA6mfvg6Hj+xlPaEHGRuaCrwuui2xkbmnquJWU480S4hmlwLk3fND2M8JRy4yfzSOsFzcN+aa801LAIpCEeNT+Eo0+wiltxVGm+QDwtLevZ34tNQKkhPqCfBKQVIyAejTRqgcEMHLlwQo1epjTqaTmNPoqJY0wlw0rTc4a/jL7EHg8TdejjThF4B3DRIX40sCZ2mRrxlsqRr6CZpCCZxxC4Jk+NJL5sE0p8ZjG4UxyjwwiacwUkpeb3QehHUFK+JIIQk24+BT96zJNPAmdkvBwhYtQMmlxFK/2Nk0/wh1EzPCGkCRyabYUpLQAfQmJkATPKaURM8SuBEyD4nXKXCIYP6U2wDlTc/ANNIuaQRXJEprTS8LQuBGOaWLYeS0kkyemk7NLEtMHUUlpuVhZMilOBGaQkuA6pgjhJml2QGmaTY4DFqFKl5mkAJh/gL6ZZZpVfxRHiBmWUmX2uKDaKhcg/ZvVIC2Ps06SZqMt1DjHNMrQOo0oFY5zS4WlaWipMPs02pptlpw+6fjPSNFb9JyZzzSh+wzVLcwO80jCQqNSRlwAtMvAUrAUwwZpYfB5atK3LpbERCZHvosrQXDAhaS800KZpEQbiGZTIRqSggRFppxDeuiukFeIYlMpCuVCAfmk7EMLss80vFpk5dXNDPNKJaSdUxSZnzkApmiTOKmddkcMI6lTmrBryBF6A6Hb+MbkyDoRMtNHLrvIWmpWCdC2lTamRcKG0j1onNSJpnUJwTaVsAJLUIpDsKDTTMMYMm0jNpstSZpnptKmmbzUqjgJbT+SGTXTWmWFqONpc4g5pmHTN2mVDKLp0OsjKyDwFJG8HgOSAIV0y/xk1HHIQr2KM1QCWAi4wU6HPEHMiVLAXJxOdC2GCITPcwRKQpOgHQzJGC9DtKFGkUCkyNLI9uQsUhDaM6oqpx2ubTkD+mVfyChkkBJL4yaUk/ejRudsMD0yiWjMIUGgEQmSb6fGNdRBEJiDEEFwMJ+YN4wzJvTJJmRrhBZoHCZmEIEzJLOh8HKp8augCK6AJmj6tSITEgcldOkpVPg7eKdeCsoyi0qnzllmhmaqUXmZdOgr54hWnHQI9MunQiYomZnXyAw8ujgHlgdMz6bR86HumVTMkR8iV1KZn14noxrLMz6ZXY4AZlONhormMkQbacMzxbRiFVrwBRwJro/Ph34yIzIuhOWKHFc/0zTZnh6EcmRDM196GoAFrwqCVuWtjMl9A78ZT+SYY1pmWvGdhCct5SZks6HJmf7MtWZN0yghx3TNJmc81W6ZAtgI5loC3utO9M9Iw78Z0kr+Pl1mQjUy2ZLOgq3CezNhmd1qe68QhUs5lEgFDIBbM76ZUMzi1zMh0VmjyBI2ZuTQTZmczNZFEQmUOZ1WpDZlpxlm6OPmFwI8Myk4y7Gh1mniCAOZpqRYJAUzLNULU0LkOisyu5nk/TMIIPMjXCHFwZNgdzOemZ2XEkO0CF7pmSdGk4jTM0K4WBgZ5mXTNJmeSccWZq8yNcJKdAh4IvM91QfCQwEqYYxxmTgEXmCVT5nZk2NKJYOEOM2ZGMzHsAbLU4ZH7IbTIZcZuMb5zKLIAmuCGCfMywZnRrhG+l5IeJJaEYsDAczOlCo3PaeZ7czQZnEGByqRvMmqINboTKngLISkdaoG3YnAQqnypABzmSzQQZaloBsRC/zJKsjvM0iu6CzDuA3xRihMuKaNceMzUsakHiXmelZPAcvcydKlK+QZmVPM8hwb8zvZkkLNIiZfMjmkhtoSrRuzPAkhwYaNcRMy7ZlesGvmdrMu2Z/MyH5n6zNfepAiaqpDCy8hw/zMqadjSXzg4iygKkj4DBgJwyQBZUCysZnELLqRNgmeyQ5Cyop4DzPUWaVoVhZ7ogVFn4Jkwxl1ALpEpcyuuasQCNmRXYFxaACyC5kssiLmVqnRK02izIZm2LNaqVncZuZz8zKMjIlh64C3MsxZz6AUFlWzOjIF0iKQacizAdpC2mKWOklB6AXVozRxNlMKyKCIW7oHmNbjTSlCvZg1jIyWn1UlHBgmlY3sXjBrGqSzzB4zzESWc+dXoO9DgajS/yVNNCDjCwwem5PvgpdHvsDiQBwGbnTw5IUuAWhBWzXAyTXZODBxakCRu9o+rEaQdzTBCz2L4kUHNP0f4wKKC5lGSWdUIBJCEExKg7EOE6WdM4ZLgeZhjIFKVEtENks1+wmSzZqktLJ66KU4ReYh2M4llFTPKWR5jNlI9x1cfA1LKrbM2YZZZTclalkcODyWRqZNiOtOl2lkamX4jmvHbpZAjgm4BcSyaDgCjMK83A9R2arWz7OMaZSrmFSziTQcmXtNIqjbsi89pDWA/IwLOByZB5ZSjhTHDdkQ9koqLOPiFyy5lnTrnbtH+VUVGVyzyTLwrIyWbCs1DyMeNXlliUA7URss1Fw38cmBi8o0RWfo023ACKyHpSoGEdZqcsl10WBhH2arWynEN7JKlZMKy/eL5kG9Mncsr6yjKyJMZgmjJZKysizGbyzFWRlDFFRmcslfKwFViVmUz37YPcGLhYwqzCuZ8rIpWVvYe2S+Lhl3QX6TyXPSs8jEPyzCrauVxcKlaaG30hcwjKFypjeHDJGOeQNYtgBiqWF6WWrpISghqypqbOaTFIO8lKZZXLAdlkvIwRIOSwI7pxSzLlDd3SKWYVbZmAbdAXrbFOgoDjDQFOA6KzYll0eiNauhjKi0ww4+kaQrIgepG4Bh2qSzH0RHwFBWZVAt1whVsgVkoXkFgC8jb2ss6IIcThoGRMkyaTi0AKzHln8rMcoUmsy+wdqyGZ6VB3FeFas3PEAHhRllmrJJUdd4LpKRqz8+A0CU9WUMsxJ6uVUUlnTrgs9OGsltZOVlq1kv2FrWRABCZZ+KMFq5t4mWtm16SVGjSzllEX3B3sBkoCXCFAclvQorNUspysy5ZnUpeYmZuAntoisop2CbNZ1kIxPHWTGYHtZZQE43C4OB3WUuQ6NZgyyRzzxATEHEclUtZtal21n32ELWeRfOUwJKUZQC5rLkdves+8hUL9tVldJS9WUI7M9ZivA/VmnrL7WTGs3dZ+ayN1ndqSaDh2srC+y6z/1mZAQ/cMqZBNZSTt2EBx2y2WQREtwOrplM1kR/jX6CZjR9ZamQDtqojQZCDo9UIOvDxj1kU+hSAuBs49Z8JoLXQgbMGWXqs/Pg6Ap+kpirNVun+soDZjspuKBIul1WagIJ4BL3pkTLtjDgqk4HBnkKQBONn+ohG0VZkoDYtul05J2CjV0spCETZYgIL7QiWiPWRnJfDpnFpxNlJyRb7Ft6N6qYvQecZybN7sKyJLpK/AozmQKbNOdpJsli0IshinTabNIIYQvNtZu0h5zBl9gtcKNcCPguDpdpmrZjM2TpGN/gWkYDjDSRjiUCcIpBurqpLNlFiw82c5GGnC7mzGG52Ric2S1Gaoi5myZIzYIGPGWWZZeojLBirAkqInuHKTWWwyeVDNjInFxQa+QXnMc/QUtlKwgREJVYcFkXO1MhhEMnJECysKEQ6pdKDCcrAm2vEMUKQn4tgxxKtAeIQOZY7OE/Rq6ByzzusGH5ZUup1kW4Ta9K4ZjPqRCcaY1dojEWC/iN0TY445elVEk3NFX5m2wDnOmfkjBqXVUy2dOaIkQlVl1s7xbMBgfbCIrZ7ogSVFVbKnKDjsb1ZVvQ4b64jCwpI+iBWC7rRchZisDm2QS0RwWDYYTfLx5CANvNnHlopaCEVGGwXdaCdsgrYm8UCWgHbIK2L/nIIYtUJJQIRjnmJoLof6h244gCAxbOD1BbYC0mVmBC9RdbLHKDNsrXSOwdktkbWTlRNgQq7ZIoYYdl/5nS2dDsjZ4f+Z9tm5QjU2PznY7Z8lILPRHbN9aNdst+k2oya5A4T0u2Xds7HZo3RS/J80G1iRROYoq0OyfYig3xVEEnddwktZwadn9qULiPTsgWwnrplbBS83u2Sx0CbaeOz4dnYuFJ2vzspO6SPRtRlzum3Hq3cGsZwzNa/yS7Kh2e7dT7ZwzRKuLwwlDxLKHKco/QETRBlhA2DroMOAWYwgVbhS7PB2fJCGHyeXZf8jXWmVQNCMZXZovA+dnlM013OvcEqAFU5sdlQ5AVgvEMNlBRDsytlHsDjtFg7RHZ/2yAImaJOy2brsk2Zcuz8fxa7KR2SgUbUmqrM/dkb1GyWlOUekQj+RPtmDmnW2ZoRX7ZXEE9Qg7EiT2Vjs3Xcceyj/I9WUj2QzAOFoE2yk3Qc5wN8mLYE3Z4xg23Q3NC/6tJQTHZIeyFwiA7MD2ddhUvZseBq9mY7gb2fwFA3ZcOFC9nq+RqHFLQSfOSrQGtkYQn1hGxkvqwEuF32pLeib2YfwURgvPlztl5nxH2ek/BnZn+4mdlg7Ir2bn4NjJbezU3A97O12QpZS0Qyi1dBgjbOzcILYcbZyuyXfBl7Ot2RHQPOR+PT7dlFemvuM0MFPZB9Aj9mN7Pd2d5sYe4exMY9m6PzD2fNs6VgnIgNFp17NwPHLYb/ZkYkFEj/cwS2YKJVQgzQwX9nn8DPuNOaBPZ3eQ2tl7Exv2S6wcoh8HJSdmc7lF2XmWOAKPVlEJggHLz2crs0vw1T9jdnDglr2eXs6HZxsIA3TC7NkEMQc8PZA2yNfYxWCcwEL5D/Zp9IO0AjNGxhIWbK/ZRxMmDmHqO5/IMMMZwiQRbK5i9FMgHGQV9Zv+A80CvOVc2P7+ZWAtsTNyGcHN1UFOQ1+AUcAqQgBsA8UWYYD6+xoc28RGoSjgP1SaQ58MxpRqih27UvPIGJ+1ARFHYlrgNvq20EQ5zq4O7653B2JA8nB/oSLgdiQqJx+8MYc1jZJnYrAqz8g5iWXNNQ5PjhyCKKHIrGhYEfvZuxRnr7VJHrdDuNHzwh1JmCKWHNCwFRYE3ZZ+BWYDhHNPWccUOVowRzOqGmHNHgJc4flg4dwZ5jSjW8OfHQVI5k993DndqSSoGYcoQI1j1YjkxP0TMGJCDigv41zDn/BEWXLdsVKMAUYDQHJRi2zDdGYHZ2UdqjlFRnrMgQwcsw2dRioww4kg8Uy8Ex6nRzISIcxktuHtGPyIzRzFUGRRnOGvdsBo54aZl9GjHKGOZVGauxgxz7eC1HJ11pEs1hIM8I7HCGQCwIiB7bpIBI1mQi/SmX8sl8XY5FXAEVwHHPmSJsc1N47YkCqCbHNQkLN4VDs9RFNjkHGHKCp5nUWAmxynjzxJDgUIKkV4528sDPY2MC+OTSuT9YhIcJgCvHJzcNW4T7RtZAHjl/y1i9kdwSIQ1xy797Ubhc2cjAc457ct4TmHHM2ObSkNoK4C4YTl7HKMlHaxBigmxzRHDZSSMYlrAGSMNxzlkiTiCBgDJGR45+iR1jn2wA0jCCcilIbZ9M0AaRm+OVp0ab4BI065j/HMbhPUwOk5664sFChpEpOZCc6jctKRUyAknLhOeRnNr4ggAyRrInNsuFPUdk5xxyMTkE8EROe1Y/7wSFglr4yRnqcCx7Wp4TJyCC53J3Fds6aOU5v4g9xI7HJkjOicpcgRJylTnjRh/0aic4Do+64o/ITLQwMi7LXAxqJyt5iAwB18b8cl05165fxCIkBlACycu05IpzsXBkbj9OVJALuw/Vhd9FenPcgLxszFcA7Q+U5MAErRiiuIpKzpzF2guZT04PachIwt7hzTmxnLTOW6c7k5aZyDPaynKIMjqwxJKwpzgzkqLDzhMWcyU50iwtvQynP5OYQsH72CLgeSAD2CJSJh7BE5mZyLMgbsxhCFikYqMzct0zk4hE7OSBEHEQ9XsWzkEjXbsAIpFE52T9FYCBKXhOWV8bGA44jhJSoSB88FOoRlcN2inX5uFjzhOGclqAbxzQTk6ER9aD+IddcjJzq0BKqH+OTScmc5nOQ5jFuXBbgElIq0545zVvayOgTOWcckc5ygZyTnDnK2OT7IPU5GxzI6QOBmZPgmkFPAwhhIhrUbncIgsQH85hpyOEDFwnzOc2oaVS1G5rxBq0CAud2c6jc85zY0A/nIRcJ+csHRMJzQOCSKTHOcSch85ZMAq3ZDnPLgL6cjM5LcBTTkDGNwuTjJZQMJihrznuETIuUhIxvy2Eh0Lmq+MtfqQoP855Gc4zSEXICVsRcw45uUALjktoHFOaLfVDyQ7gUzmO+QBYvWGU45UcA+LmDnI4ubVwWCAiSVcLlmOCYuTrMac5ikA6laxe3gudEgKKRUYlpX4lBXy4KOc6s5Nvkt+yN+liSsrfPS59yAvzlw3y0uY+c4JcBqAEWL4OnyaAVQVhASlyexISXN/OZ1wBy52T9JLkvIGbErZcxrgLMA03aBRB/QE2codAJlzq0DcBGgjJD4AC58vkOzlfhh0uT1gUk58sANLkP9GCuU6gSXEHpoHUDbGACuShcyy5XFy19EyXPlOYEAbM5IcBlE7eXLzOW1fV5yIVygzn2QH7JDugWK540Zc/K/BBwQLF7KC5D/RarlDKySuSbfCq5kVz5Ll2PxKuYlc8i5shzLTncXJ1mBxckVwzlzTWQKXNMgASc185uJyfvCaNHYUpBc5pcjVydCJUXNTeDVcha5Zw4BLkmQGmudZc0C5xVyXzmxe0VOazADU5AgZwZLE3wKucJc6M5ct8urn5+WnBl80Nq5MBJQrm31AcQD04Zq5+5zyrmPXLrlm+c2uAN1yFxI7HNMgImYUq5BFy+DntyzTdrhcoa5h1zxXa2XLvKHRc965b8ArLlRiWeuSjASi5q1ztzny+WlCNpcgdobJyxrk9KyqufWctMaENy2AzG+OOuU5cj8A1eTjuyQkB/OaN8DeJAFBSRoQZB1WPOFEU5LAwplH67EhGdAMRgpU1g835T3hq2rLgLN+7Nym4nw1gjORAMDsEHzpWbl8wDJucJjJhUUdgMCBk3JyKRnREoWP5y2gC/MVLIEycrDwKsRNaSy9BlgD+cwzZZ/TVbnngEQubUjKP0wyYfzlUyEwVFQgON+eMYxbkuDIzyrHRU3oaY0LblcKl5uS1AI9AhEcO/DBnN9ysFUjrQlNysRqcDEVUeTyd25z5zeUAe9MASHTcuL4Z7FKHTenOX6NvvK25sZyheAqQgPMW85dW5/yNRDjGNw9uZP0bs0yF1JTk+SODudIgBeAP5y/bkxq3xBtZCC9IA9h9JBPTlpSHtGIu5yPT+yDMNkLuRtGBfYAUQLoz0kGrTrXcvaM9dziC6nXkejMhgEQBrelXozt3Mx9txWeY5Zdy+GmbSLBqGtGcPAL4p+Ryd3LbuXNGeWpJWdE+CWrl3wPGwPXQFaJTBFsyxAns2wgaQG2hx7oCrBFPs8bJe5REigQLvkw/kGWwYLcNIj1jn8sCCRrckO45N+R7p6jSE5yJfctwBkW9XlFt4gDcK9kM+Qh9zfypC6DwkGjkRP8m9zBr6eulXuSGwaNgt4D37lmOBRYNn+ZHIT2IrsiwAVXuTYuRtgimNFN4E5Hf/GWsPxc/LBB+iNUhvuayfCaGBQi0Hmg5QWhveg2lgAiZoIYFYngeYFUE0R0DyCnrEPMTgmM4VSysMM7kHr3JO+smsYcZ5uh+NxnyPn4UWUcLchaxOaysPNnuRQI9KQRhkOoY0PIAeSaMm8QlDynp4CrFIefs7ch5G9wE1oeAiv/AKsKR5vK46HlTrDdeAyfeKGKK9w07YPNCAV9A8SREesNHncrwRyPMBAh5mD9PXSFAODWqm8bWJq9ywXC6aD4vnJTHtIY6zV7nUzl5iYS8Gx5+jzURGc8A+ZBI8tjaajzpXQ6PNgttjkfB5LjzezlJ3WMefJ7VtgMjz61hKy1gAvtDTBCkhhkODsGX7RIbcIWgvOlV7l/jCUmJX+ANY4zwaHSAPK5dp5nVSykTzt14ayAvUirTbdeZWQ/HlBuwfuS6waxhnWIZdbIPLuhqCYLB5T/5i2Gwb3yeYvc/de2TyRHkQxiVkBvc21YKMtpWCwPNhgl2Mep5ZawCC7OUFsvqitaJ5zlyIqp7uljXhuoZx5mJhQzDTPLMqhMcQVYSagR1JxPMFWNjIEv8V8i+nk4UFSeV0898YkDzu2HR/WKeYI8sN2Rssyomr3KjiCk8r+5di1unkjqTfkSrGfp5e1dnRElg3GeWyuU8QXYCXkD7PIFWBs8G16XjzrHl3eg63O48+v6I0gW0ChPPzwBAMRJ5BzyX+h7qB2eWC8sZ5AgZMnm74EjpPBQ4UwYDzQOCQyAKeYs8opQlzzQVyYmBHObhGCp5Gyg8XmeIDYeeKkLF5IfoEHmIvOnBvg6Zp5Vf0pXhg0NQlFX9K1O1Z9V7lQvPcuTS84e+3ksBnmUvLmkI5feg8Vf0cJBCoAmeZ1iCE2Hg4ZnkMKBFeV+GBZ5aEhDHg0IxWeai8pCR3aAEXk5/WBeWXhFl5ppYPnmgPIjEnEofYgEesHIbsogiUKK8q55+mxiOyKvPLnAX1OF52Dy9XlUUAPsNs8zV5ulB037UvNZelm4M1+5LzXnmk9Ubvq68nB5Rtt0XmgvPQ8FuWdj4nTzjXkevLJgOwci1ENWIfozO7lwJP9GFYQtiZXuAEeFhgrVECcqIOwvkg/XTogI67WGMsu4bfYwxlOiCJQFGMEbzi8jddk/gnjGFsE1xSWnmwxiSjk3+XGkqOQNA5PNFpjNoHOWxzCcswRcmGrefzGK0AJMZPazI9PFoP5tDt5Cgc23kKxmB6VUcnZIXMZFAGVvLrec0co0Yw7z2jl3oEneVPcnJh4rsa3SKhlhqM2JUK4LCMsWA9iQ5IP68Lb23HtqAx9SHbEiu8jB0pXsHSq0ulreKKwJYqbroK3hJeF5dqu6Ct4zLBbLgJzJveUT6T9YBoVzQyXvPguKNEDVSbugacTKOgPeVh8HWYG7yibRumj/edQGO6+JntYfQhhlLOEPo7D0UakhdQoTiKSv+8g0wrt8M0j0mkT9Ke8+d5qnwAVKvvJ1KhW6ZwMt7yB2hARSdUrh8o0Y4zCTr7Hez3SJulE8pTeiZqKryVYxO57Kj5bdDd3lFnLPnkBlEb2RHz/bTmoBVOboae2SEEhgvaw6WKdNx8zU5uvgWVLsfJnIMh85j5pxi/3Sl+gY+eu8uZuiHz6va11Hmyaj/XAx8HzoKk2BlY+THaRT5QpymPkYZUfeRFRdTu219YvbyfNmSq/fbz2ZHyi6HRVMSSot6G9KtGITZj7LFOyedUOT5CojyO5KfIloYjAHXx97zpO4me1m9G+ld2gaKpzOiOfLa7oR8uj5fmSK/J2e1M+fjk4z5Bnt6ST7yRQfkDc+D5RZJ2zlQfJjMPP5Ya5RSU154dyRi+YOc+D5qWAUnmmsng+bs4fDQ8Jz1nSQ4xf9PCctL5kOM3vBwXPxJCeZQL5XnywQw4BXeOQxjCp09Xzq3C8fPDko9vfoKgnzkXYVfPyaCu84r5vnzbPkumHy+becgb5emybb5IfLLVErjUwUzYkF3ni40SFAx7bD54uM7PD/nIY9EXJQmhmnza6EpHSXQPBcKr5i3yYnmmsjK+YAFZC5Pnojgx3lG2ebl8xmhEGIIAzbvNIdFjkR95I3yAXZ3X2IuXl8y75iNyJPkAuzG+XBc995KOYpvnD02feY2ZJb5PGdiyTMWRtYE98nB0wcwfnkMZzMdCB+Bz5ZjpwfmnXPu+YMsyGAmXycHR1mHcued80h05Zg9vlfvKODNHMM75OswyvlV0XRedt83h06sgcvnmdC0+VYCIKgy3yZ2oyRkYfqq7AT0HSyXvnjfM6+RRs07wy7zybS4/LxuQj89U5APy4Pko/IfEGj88V2vXzJhLw/JWVNRYaKAuA55vmh0K6WLK80K5K3zBlmu3yqubV8xn5ivzKvkk/Or3qVc7+QGjoJfndoFNZEV8kX5/Vy1o4Y/IF+blc9H5t6Mj8SbXKN+eb81X5tlwovlbW24oLtc9z5/EBRXnkZy0+TOYXX55Pza6G8uCx+Wp80FZePzxhoQrIt+epcufwxqMPvmEe1Dod8YMn5w2B0PktRCJ+UL8ykyMHy4DHp+FIdN78lL53Pz3fkBXNE+V3YISgX1yWfn2/J1edXkh+EndgpvjI4PiseLjXvR/pMWrEOyWGUHkU4OeHck7cgyfnjFCBZC2x0SJ7gy8J2FQku9dRSjr4y/kl/LV7qWKRxSqnjwWh6d3JTNrtSQcQSkOFDPFKr+WM4aYUHs8YcYmBhOaLP8pXGrniaJKryRU3nLksf5X5lAtAfvD07u38kj4YCJxXi7/P7QoFDev5gWhDbzUWDX+fiQ7guMtN7Yzis2KaIHPG/5A7z5Er3/OcjOocTEIpLZ9FLQiQ8SVOM2MO7/yI5LgiWzDr/8kygHdypEC45nh9tf8l/5bmBq04JGFABVNGAqgVOYFjCzvKw+t0+G5MEUkv5m5zSmsO64aHEgS0J5qERkI8MjyUuaVvQ8AWRJTbmigC9jySczxPinxHfciWtXjyluz2KB58ASYDgCxBM1fBBgLGFCZyO64OvsIHTkAWnkka2JzKVLGtAK+wQShwoBaQCkKgXsyePiUAv02NGgU4OXc1CEzQEWyWlXNXAFNAhalrifAwBf24V2GnAKscglCyQxLwCszG14BjC5NzKBmpzwI0WsgKGAUncAssnfwaWZRiEGrB0YjWAaNgV2aXIZ2KDwCD0QobEKNw3GID5ntPgTsPG4fToO8yBUJ1uTQBUohP3wqblw+S+cG+4NZSaigxAKlELiAvQ8JAA2wF6zhuAVwYiFmd0+TeMllBHg7wdNdmisWa7cI10gJz+zQaTCsQ7lgJgLIJj50GtCEoCnj4svRP3DmCEaWsoCmBMM+JtAVdzQUBUUCzbaE80ZAV09HyBZEC4+gFgKhAVxAq8BVEoLgF324ugVeSFiBcTuCfmCsyQgU9eW0EAkCwU2EYlmgXhwHcBd/6Wohw8zAPpe9HN3PMCoxC51htdx5AumBYg0cnc0v17JCUpn/jCLQfEOlgL0gUbbj6BX5jAIFulB2ejUzMnqMhSWyuGi0/MYdWCYIUMCrIF/AKsBqlMDEBcICgFIsMyTcjcArBSL5wfgF2g08Bx+p29dIikDzgqOR2oRtqSXzHpjSsM5kC/PquYw78NUXdWZrmMrWw8UDN/NTM17gTnC21LYh0SBaEC/4FQQ4BgXwgvwBQsC1oFjL9YZkjAoeBYl9LaaEwLdKCsDTxgKcC0+uwJcFg5lijpBfJuA4oyT4vgXzoiKCLfM0wFKboVIjc5jZBc4Q4eZ/QLrrTsgv0BYKCokFF1wN5mkgv71H4C9p8ZwKQPQEgqMQsw0LNwHIKnAX2+EA8MqC8Z8mfhnCHygojmkcCkn62AKuQUdfRp+kEOA0FhX1K4J3ApkBZveDeZfIKZfqR9BBBUKC/TYJVw3Zn8Aqw8APMwEFzrT1gU7ArRtNqiNVEPXA6eA2WTiMgPMtTUncY3qpuzKDBYB4SHkHnA/QUYbDFmXgOXYF3oLvFlF6H9mlCC5ppPiz8chvOSTYDXGaQFx5TbQXjSGtBcciWPMJALE4ws8ldBYQCih68CzagWIJhUAlwlSoFwyYOQBEzj0xjkCrpEaX05MaagpdLugmFYFj8ZSKnS/XS4GGC35cxYLx8y9gtAtBv0N6ZUYLAqnC8lfilmCghZIMy3gWJxl59uPmPMFa7B6wWTgrXYAbmdAFaoYjFlZArjBQ1Ui5IHYKbLIrgp5zu0+VUFyFTHgUtgqPBdyuAUFu4LL1QaJFDBV6CreZTPBBOCGAsmRGdAb6ZaYLD/gV2FinIeC20M3K5HAX3IG0+F+ChNcLCS5EKrAvPmT+ChYFZ4LL1ybgo5Bq1qLuE1YLDwWdgqeqePOSwF9gLrVwlgp2bChaceEuCy2AUOzJSBawC+2ESK4RQVVzUITPlYRCFHQKsExC/XiKAuCrlwa80AKAAQqVCGohKCFvy4tmDxlhWBf+C42ZARQ8QV9zK6BfZIN0F6a4RvrcQtLBYuJKRchYK8Ews5mEhVrMl3kCHAFwWOkEzgocCthM0kLrLlwQr3Bd3wE2cLELO4y5lC1nKpC2+M94LuLmKQsvVBwCy8A5oKPxjyQs3QDOCwrUMYLvfSmQq1mXN9HSFtAKZ+KcylqxqWsbOM4EkxmD8QqjsIlqfQF/ELSgWUZH0hQ5CkDgdCZtIVDzR5Bv5Co0Fa81PLCTImMhXKoRoFH4xzuj6zjEhRxXccFFHAFwVMpl1+VFC+Apw8z+IX3AvvGesCmea4DRUtRqpwDeeJ8NCFWULpfo9SE2BfFC+gFdctdIW0EQ8hZpCniugiywIWsQoAEIrOS8F1UKQoV+Y1aBT70JVkhEKSinkQoCkDxCqQpyCYE5r2gssKWl9G3MtkLsxjzaDihXwU22ZuEKOoVX4iaSN1CowpycZEoWOQr/LlL0Ub4skLb1TrQoTUEohYCFzBTsvrVdF2haxC+aFWNgjoVqQu1SK8yFqFFJSXeQLAqsBRrhYb2sjhIQVGixtqAcUMLGXkKFCLjgrafFcCr4pFUK15qygvXnvNoORCHUKCxRFSXQBVUC6ueoMKKwUXIlfeBBLRaFN4FOZT8QuBhdpC2aFpAKMxjLQrhhe8uFyS8gLKwV0hjk0DlClQFoFoYqjAsi8xqjComFbQBDIVf0V+hVNC4iClktqYVLXGk+nDC1VcWMKoYV/0RG+vjC8GFaLBiYXifEQOK7PIIFC6lxPh+QtkyMqiPGFT0LJkRMwoWhYVCxsFJFh0YU6grYTDLlP5kSEK34xYWARhVdCymFgwEewWLAs9nlTCpRCioLtMgqxLNQEYhf6FQDFYYURAqSBcrCrsWJMLE4zywqlAJbC2NQ4oKxPBeYzNhZzC8mFssKp8I5grCxkVC+DIK8FQoXJgojUJ4oHKF70KO1DT4H4hQTCoOFXMLGAWO4S6BTlCmiFEahvYXUwoJRBA4eOF6wLSoXDQuMwtxaFOFHUKIwU7QqxBZ3hCWcLYKjYVw8lOhTMC4eMtSIrHAKgvGmBFaUuFsMwqoXSYQCWSnCuEF4mEjQUtgruheJhd2Fm0KNcI+gsPAHIhf6F6GgeFAtguVsP/kYOIkMKegUnPhSBZ6C1oFW/hc4yWzQHhSJRJuFhsK6QUPp2ZhcXCov+bMLy4UHkkPTiLCiOa9gLF4USwsshU7/a+QK0KJ4UbwqscHcC3AFS305xaLQrAUOnCqaF58KV0CXwt8+uSJbGF3NFpfp9QtThbfC0NAQMLSAWXyAQFKKCr+FnL5SWpD5klBfrDV6F88KJKSa+EGhQqC2YFosJr5CngvghWZU0Qga81BYUhJBKhWDC8I8130ZCCvwsyhfrDCBFk4KXvqt4DCxkfCqiF1zob4VOJB/hffC7eZ1cLHdnc0Trhagi0Go68yHYUCwt0BT7CA6FQ0K9oWozhlhcvCtOcc8L/AULwtq+kvCoBFCyh/YW2wpHhD+ClKgAmyyCFPQRAiIvGcYGCuMeYWNzNsgArjO6w2cZTLIecFK2ZeuAsF9ehUYWPzLvvKnC1Aw485gprIQqXjMGkJNYLcYnPDZuQYhUCubuMh3NxXC+ajgTEp1XWFHjSW8BDDkLiL+uKxFDeZl4SAbmZmQveDqFRiL5YBSIrwTIjMjgoZsLt4yvcyNhcwmT4cUCLzAgzzOV4n3GehMEU1WIXhIrpevBC9hMr3MG4WFzLFgoYi1RZysFdQWvS1ghV/EEBMWKkIOZIIq7jAPGIV6tYK7EVMSDwhUeXJcFsnAlVztgs0RdIixggYgxdEW+zPIkDHCkJFrr0sEW9dExBXEoWsFcSLIEpMItrmSvM/JFesz1bL/eAhiHJC4hM1nU0kW+/DTwNGeIOsh1ZaKyDWgjrJsAVmsMdZpMRsmAOcKK4BChzfZHyDbIt1iOX2PZFJC8+aDTWi2Rcciwism1o9/DbWjJKMf4xPgXLR07QyrTaflk6Nt0g6wnkXmIERpIkzSCEevTA0hMKD2EFb4W5IltBaeaGCGiGcvw8kwmu47SCnYkhSDvfNkGAKKObirhG+RRfkBZ+GQlgcQVVB4fvcil5FqKLwiTDonFSOnIMJMUoNG0gtaiEvEWgaFyRawCAQpH0aAsWg1vRcOFlDykIV01IwIOkYAbpM1hYPy+CrC6G1aLsAD6BKyluSKiLNjiqgdEEyvIt02Dz4HFFnyK56DvIr6pE5QabcQxAoTCAopvyGyePyEK1J9lBiB3iGTOkOZQIAgarBGizZRfW/WVFKHtXqyaPxYGUWsZmAuj9RUXn3ACKuu4YZMTKLdNjK4A0QnSi1bYpZBLFpUovpCHIeKJ5fPVX9k0opdXrqQPvcJxBIPQaorboA0VL1FwKReLw/bAeRfKi3YGDqLEkwIpmvcd56W1Fbi0JSYSostRcvw61F+r8KUUmPPVcXDGWXAhyRcUUhv2xGT8in1+uiQShbhoqBRVsGKVF0YwXX50kE6xP6inN+paKNlDcooPoIWio+4OqLm35GooVWgaivc2WaL7UVGJBJRejQAN+euAWYKdorQ2EqQPT0RawwXbPIrHkIsLPjYnqK0Nq28AZfjuqRlF1aKvnYaHjagXSkitF46LpUFgooTfsOimGB/4QY34skAHRTGivjYSaLE0gpov1fnYgXPZ+aKb8hK8kZRbuiwB+66KD0Uyvyz7Omi4VFbTtxcA1UkvRbabPUZp6KDBAW+iLRauimmgn6LzihiYA3vg3EPNFZIwIthGKDa9Oai+jYkqK60UJopZrHseJj2ozAVoDD31GsXlA+DFHW4VwBHKEeRdN6MwMO6KH0Vt3zfRb2ir70sex0MXgYuh9IRir/AGaKCMVrEC/wIiioe+c1wCUW85VVNrRihla1qLEfSCotapA+i9g5wJTT5BIgh2fpGU0+QpXZbEx/lDNRQ8IlDEQKc57kXSl3WWGi1SZYtUVjwBpCkxVRs3jFMKD+AzE/k+TPYIiGJNOoB0VyYuOEI6ih0cySYCwhQpkQkLUDEX83B4T0UzwlyTEOET6ydG8tAydun2kPpi7jFzu5UFADorsxYwIXMwxaCMQQ+v1ecHyiz5sQKKZUIkotQ7CGi2z+4qRiuC8XgCxZIoENg9b8fMWHJHjYAy/DzFYmKtECW7k8QizBfLgmO4HMVKwFUxSd+GTFtkhkkwbZAOTIChZvZsGLbJALJj0oBZisJeRphSdxipFyQkzyA+gcoRckJSmJAEAsEVlFfmL9aDhhFOTKxIHo6BghssUmYpvwEDhG8wXqKnMUmbL2mTimeBUU5wg4AapkEgMNiqlM6ZTLhorUiJTIUKFFM7UVgVSc8DeEQNinwA4PoZsUawBRTDSYBbF62LO3mdeMGwHimCOuFiBRsVEpmAks0crlQrKYRsWzUGmxediibFPRzWYw5ePGxbKmMbFvwj1UyIAuD+vogY287LAMdrdsh8Gd2eQMQ0PBBmCJk0ZNjl8lpgiZNCh4hXKj2KDitJY4OLXvBc5DW2rYcSegjOQ5aCtY3yYIDiqHFTqAQcWPZHl2g4wHX4Jpw0kjy0h+tCSnNxIwjjvbyWCUSSFHY8hUsh0B2TTDIREHOKeQMv1Tg05/Yu99Nwk+o4+ZxpnkfOg+xZqcRTYjR4xBlqJJd+SSqEUmEpw1EjBsPOdHzkaxIuSA2Bmi4uRxXyBfNqguKdXmGHnzJnGcPnFMOLQcgl7SHQBDix7I6LBhrl0+n1yBy3SKgAOLHsjaHXL9KxHA3FYuLNWG1ZF98lt87XFLL0vRDDPOlxVrkAcwZ3z6bATHG1emTiwJAbd59Xqu4v0QDdabV6ROKPDwc4o88Lbi5nFEiwscXiJJZxUji9j47NIIBmDkRqOJocRMmhUQ6cUbDKCTlzi7v0AuLCejQvKK2gtkGHwe3z3sXalDJMIHi+nFN6svUQJ4s0GUYYfs822gF5HtPUZxc+yHHFTBhdjR3aLjxQeINH5GOKFE4SHR1VgjiwcilGxDHEE4pS8Aa9RBUMuKIDAGvXlxfrkXAwYQ4zcWIsBYsHLi43F4+KT6bkICtxZ2rEPFduLBsiDxGzxZDYZ3FAXh88UejAByOvihwMXuKFsjL4q1xfFIXFgRBhphwo4txYNvixCAH2S93TAEC32ljkyZ5XaxYSDw4r62MIodhI/2iZxFXeAh+c3i2BQNuKd8Xt4vLwJ7iivFmG8dWjJ+nXZCTi+vAbcZGjyj9GBxEJYKn5V+xJnl6+WAJQXitcRlOLQ8WnYndpDvixMYtxgB+6z4tEkMmsLAJuvz+cWoiOwkLL8uVUKojwtqRXKdxWhIXfE5BLpZhgPKIJdDiugZck5GhL4EuVxekoIaI2BLu+nX4DLxfAcJkZ1o5wCWR4pnET3QKXF6uLZsRw4pTxaiInqgsjoCCWYmHdoCvi6MZ5UhfcXs4ozWKvE6y5wdjpPh4SH0yprSUAl6hxgcUAEvKkJ7i3/FIUhHcWH4tmxJriw65n+KT8BfYoR0abSIZWTSAfrSujjFxZfizrET0QbCWpPGKpPJAV4A/BLRHlMErVxcYSxR5deK4kCYiJN3sAS3wlJjzeYZj4qnWK3itI6IRKbV4csMUGSJ7ZuJ4iB9cX1rFMJZOyKPFNq1/CVT4vZSHgdLhUPBKyfYEzhoJVBIUUUw5op+kPLUNxfAcKLWKq1w8U+9J5xSxbcOhGBKZlCSil+Yio8U7EzipiVTRPBaJbomTrgnhLbViiEsyJQzBbIlbCp8yYaW3yJfyMoBCZRLu/Tu4tTXvyw6vUUJh8W4G8EYQNq6BzEChSn8XDEqnyWkSjEUNW11iVAEo6DL/i2nF5eK/chSrE6JWYSo0YSJx9Uj6+RKQBUSvr2bOL/4l9wRSJUPi7ZaXBLwiUgrX0yt0SsN2+e0Ao4ziPO8NjOA7w79yLDB1EtGJWXgXlw/LDLiU6ux9zqIcFdqqS0wSWx2MOSECSiwUKxK/iXOAI4JetJCbOZTBPiUJEo2KL/i3keRPymkD7YW3XnjipdkEJLlExa4sjGInBIklxxKASV4ko3xbkSrElKhKWCWeu3eJUkS/PA8eL9iVpEuZJRYcAl0QLyUSXCEqZJd4S+YBrJLeSWOEsJeeiSxo81OKXKCvkGQ4IyS9DwXATFO5R4uH6j1nSUlnsQMdofEtADnQSuuJElhp+qt4oHZMKM7Pq8O1ckApa3debqILGAtvjb5oLvmGeuu0k0lpIlYDBqBEihWAhRNWuXttPj6knIMCbM9DgtpKkDD8BCfvHQhETW9pLXSV1XH+SifNKLKXpKFZlxZRPVvUaC+aqiEh4G9GhZFG7BcpQAX0ApDBkrngb+lTbGZxQipxRLV86aySR0laXVMQQnzUpgmoQQv0spIFVTRktpEV2yPzGcMFMCAeLU2xrohGWALRA8NibY1msGWS6Y0YZLSyVRwMS9umSgVYwcRiyXUkjQ2tbEWwFtpLv8ANJUbJfqSHscVud7Mxdks5/B5wKOCdeAu4g5kmxJMmSthQqZKkyXQdXiINVlMMlOZLvJzDks9JX2S/MlwZLGFD0wRdJWFlE/A5ZKwyVswVFEUheOOZWsFzihTku5zBuSs6AGnBeyU3koQ4M3gZNY95K9yUo3kkXuXUGiQ15KxyXjSE/JZStORZ25K+EiLshnJWSlZRe/ZL+saDksewGBwbMlhZLpwra5l7JTBS5BCj5Lr7ljfVcGNuStk8UugCyUmiP8vB+S8MlA0g+84zksXJb7FRMF9mV3JCeZQHJd/c1laWRReyWvOzwHMRSuLE65LREIybw4vIkMDclv6JpyUsUum+ihShilJmC6vadkotQaStIIcVFKvyVxkrgQpjA9HOvFLuKU9cAnJaigyAuWmYaREWx3kHOeSi1BtK17JAi/DcJchSvbGPWsPqSErWEpceSvJB/FL65lqwTFRTj9X8FhlLz7jqUpPmk2Sm78CkLvMoWrT+zq2SsJ5eud7KXspFZWipSnCli549cWfzUR4ExtV3FM5KmQwUbRy+fhS/x5xlK9sarkoPSD1IDcl7OVrvYjkps9i5Ssiltqx+KXhUpEpQPcDXMYZK6yVDrUl+cyqY0mrMFOAheSFopREFEK5gVLZnk9niHQBhSj5a8P4h8wRUprVg4GQqltsFYqWZZQzWLl9ZP0r80MXyirA0JRAtJUm2VKaEYWUsHJWDbaqltFLeqUWQu3JTnWYa5pVKN7jH2HTxaNSgxaHFLcqVcUqxMLStAylcVh7174kqcpZ67Qlam2MmyUFAll+dFSsDeQuKwyWVkrrwFbgAqFt800yawb1Nxe1S04lBYpJ8XYkk0pYCS6alYZKbqWmu3OJUeSlql4i00kjRxMIMWkSixIeNy03LipC+pa+cwrAu+BbEhx/IRdCYvV/8ygYgSE3iCThreciGl19ypLz2GJxxYhIGSlcjQ7CVj2kd0Lw0LQlF4VZvCKTNmxAiWBgYYnIZxGDOzE2mkSwil4EBa4xpEp4vJ8lcmlp5LYTHwdVskGHgg/ybD4wl5tUsuSiLirbEOFBCDFUDCgkNRS730ewUhiVuj2+pUiS/YSygZsaVTrFCWjQY3IljiZQyR7BXzal1SJGl1IhFnlq/mYkpvi/EwitKJ/5yEtlpZ+8mGlHiEmKUIbTSJarS2UBRoZrUyOplVHCGwC1MnYyjsxOOPISP2SX1MQiYcQhm0sYLEqma8RqiYdxA20q48KbSr1MDtKaioOSEq9uA/YoopAKMn5OPmnTmH5c+oVkguQxhtDPfPUhGBMMY139jZDGQjNo/EkBGXBdoYpBSu4AIOdP4ydKxChGJCMwsnS+HqbSBJsLPBTHyBFwSpAZeyfVI7zNLQJB6Vm+OyEy6Uy8G/viQ+MDA/yVN5opFBT6peQfHpLPBVJBbMw58o0EZB8uiQ1DAB0qM+knSiOlWgw46UDX3UYKIOKOljY0NCjMZRi9uPS+JCRdLY8Bi32QfK7EQNKvtKrnwuil7pb3mHIF8C1lEgz5mlFM6NP6or4hjRQPjT0SMAkIelm81Mijb0v+aPDkbJCRwKO5op0ro+gfSkOlc3N26UfX1vpZtzQKGa9LYRpfgujviPSpTqYdKK5p70vO4IWKQ+lRcJKrgX0q3pPbBJhFtM1OM64ZUAZbGpczqv9KLJpa1G86qvS398JsFe0Tp0rw8HVAUG+D9LYRrN0otgCgyg7gs9L8pox0oimlPS54KHNB3YLX0tGvkZ1NpiJBy6cj2wShBWHNI+lnw5MXA1zX/pefhPOlndLnEWYMo7peM2KtJFcKpoAD0onZoAywRlyMEfaVTzUjqDM9N+ldDL7vAy5V3oDXSutJSdLAGjbpUQwGy0UXgJsI65QkP2MMPWzeBlzwVEGVK8GQZZeUSRlaDLsGXHuAYZU5NRgohfdc9nZ0r9vOdGNr0ujKyMjsuFhcKdfRgoc4DQb4iMvdiG/SzhlpyoL4zVoEpTBmkz+lZ00mGXe+AFaNIy31mzIVg6XvZEHIFyFA2+sDLvxo+MvHGsQyjxlxjLDGW9uCdtNmNF+locQnGXmMpNiGYy6xlUbM+LAdzUSZXreZ5wQk0V8bfjX4ZZ4/Izq4DgZkoAvwdmD/YeZ0QDKtMmUMt3pRmk3JlXjLe0pKzHx6YIygOA0qwamXw3yM6pukN1oJuRPWgWBVwZZ9NDJlLgUsmXv0pvSffS3hloXIT6Xv0orjPCGRZlFqQzETz0uoCrPS7OaTKFNlp4hNhfv7ECaKGQU88AXpP6DBXS++MnTKob7ZEA42psyiyaBdLVmUReHwZTEjAjw6DLquQLMuwZYQYtUM2Y0imWPkFB8A8yq9E9zK5mUzBX4ZUJNCZl4IVTyR5MqIAUMy/Bo2sJ3ExzX03xrxtGJAyj8jeBnMogZWw/JFKoHpYWXdMF/jGPSh8a2zLQWVuHO/pVRtKkUKzLf/4ReHcZXf/UHw7TLDJInMr8ZchgHdJ15h9PCo4CNvESy294DyQUdnK9NG+NWzNZm8vTRUAbPQPpcLlL28gDL+WVBJGptI75Rllnyp5Ghw3zFZcB4PGseaBAqifeCm6JKyjVANKNzrBh+VhXHUy9Pqgvk1WUGpN96rFAc94ryoghEmQDlZR6zK3o4/k6Qwmwl52WMMo9AbqSDWWXDPsqR0ynVlXfSeWW9uFShoj4FxlhsQ/el3HBpRhKy6tAAwQbGUysvAGVrUd6lH1hX2jEEKOBeCwg9oOkIcgXgsJtSFeCRtQJfTOTCoEMWULLtDoiqBChHARmh6xdko4+QCfS9TDYsj3sLPKOtI6LIUAWGHmXMAzyHr2UPkh9KRI2LCUWy4Nll4SQzRQ+Uf0necbnC8tEc2UiQmUUMrRPGozaNlyCzAujZZ2ytI0+joxnQRsunBJ2C2eUOqRiCFchg2PCGyhcEYbK+QIlsqfwUcCm48HyQSUplsqyYrOyqtlbA44nSTsqZmPjtTG4sKQ12WiMV3ZTu0FAF1ZwD2XLst3ohUwepRu8hlpQwHkVxJeyjaU58gU2G3spIWOVi28Ji5JkRFFIUrZCvFQp0Lh8P+59srNkWkYStlw3hq2W8dHPMIBy9dlSTYbLj4SmHZbUVUdleeiPCbeuF7ZepRZOmvcNsIQeKGwPmGYbCEcbLJlDGZCPCbTMKfGlEwBcTmUSzpjGy8S4KGhoOVNhPc1GByvHaQrJXNDyLHHMN8lEmYTCxF2WlsscyNgscCIZCNDSBAcv/+BByutlAoTr2glRKeMGPMbiwV4I22UNSgjrvRyz9l50omOVP4PHZTp0ADl/tM8OVicvQiA94QiM4xVz2V3KNI5SToPjlhbL12UEFzHRqeypkJ7HL9KJK4GI5QRCFTl0mtDkbycvYCchyyjomHLP2gZsqvBKhyyqie5p3nBVmhjpgWy2DlNlEzIGeMEg5XBywYacFNXOVrU1nMEpy2Mo8A4/Ohyco4on1jDZOTYSeOUdJwc6Huy3DoVFgrwQCcuxuN+y7CEInLP2hScso6FSYYGKGKY3hxfpxk5X+0eEwa9M02VexUy5aZy+EKECIguUOZw05TesZ0+FHKgsweBCBcPVyw64MHKGOUNqEHZeVysmK9nLKOglcoyzN1ypSEUIL2uXscpC5TpRbg8jbLEOXigka5Zs4ZPQHhNauWJsMaUGNvKrlY7KtKT24FXZVOy0Ll4dwiuU2cqhBetxYLoYSj0uXQgg65Venbd6zE5gugGqJo5Y86XMw6az8JRfgslQFdykqJSZpHnSmmGHWT5ylxO78wl2EMMF8HNW0NblN3KvuXqhFgsUOyjwmsmpE2GOcsrVkJy7TlPbRgeUOcunZRrvLTlHnKCpxEyMfCYPYECmAZhIWTI8tSqRmykSEC3KEeUJsreYOtyn8mrEwZ1n6crfil5y87lQHKoUJwUyM5XiQJblnXL0a5lcss5QDXDA8S7LqyhL+WzIDTy/LlK3KKeU/sv8UJ7nOHlv3LOc5TctSiaEoR2RrXKZuUb4xbZcty7Bo/XL1YCfMD4StLy3DlL+NnOW5srM5R74VrlVPK7fCbsua5XpU0nlEPKdrjsHhvZRdynX697LfnAxcrTUPry35w6vKEDzLOC15UfINTluvK9Kn08vV5ah2LbltPLzG6fGGVpg4TWom/PoZeVRssseKI4PF0HPLsGj08rF5WE0VLl04IvwW54245ejy/Ux7nLXuUC/SnHIxcNrlrIxEuX28rR+v7yi1RQHKhjgjYHlZHmyvmRn4BLmT9FCp4XSU1fGgGdQuVZ8o+5TzypHhuXKA+Wfcr3aGAEZ0+tfKFBFGgjrCZXy+YiiPKX2Wg8s7TgJWS5ktnKAFBPHhL5RdRTkYjRNveWm8twEeFyx9lQTI7eXDeE3jApSFPlcMxT64KUj55R5YCCkjYiW+XY8t7uM3yxjopxQe7Lt2CWRphuGBMs/K6uWEcvr4WHytL2xFjHeUT8rIEe7y1PlVA1++XTqI05REoHSA9KiVeV1EWSSgzyqHhrFhk1FMItGIgxYOPlbfL7uVZcu7ZVQNJZItLIDuW38vz5cWEmflV/KR+WPsrpCZB8bPlpBMdOVwAWSwX+aNG4BP4vSQkWmxuJ4vAPlWB4xcCYxPcPsLwrQgBQkQj6ECuI0E4yCY+v8jGUJ6cswFfBoMleWx9UBWlctPCSoTOHyn+gmwkhaSCzPCgJdh7AryNY6rxIFeuygX85597KTv4HwFTcVQik7XKXeVC/IsdLtcPMJnOI/kyJ/RTapecIQse7QFBU7YPspJKgFX8SnKetyoghWElOfUPh4k46BUxnz0FWmEoJJFxEGZS70O8sh1TMD5MqkkIR3zDe+UKpOecaZx/3lktzbzpzIb95cKAVjRmCphUlfISaiSHp9mFDglx0D2pD5x/gqmir3vNIjE3OOnYTgrbMJKhzsFaRGI640Qcyvmdenl9K4K5VKJJheqJ2CtwdALclmQ8HyWeVU6GSFX76NZYUjRPBVB+nQhEAsXwVd5hvBXlzAHUkD86lA+6YR/BfpTxGBEKuZuKJh+zjJ/PcDE3OaIOynzB7DYH3SFfXsS9MeQqjsluMjTOGV8pXELgqj8D+5IKFcjoZX5KjoPBWNfJrSnHuD+iDPzGLCm+GZ2DN8kYV3ewJvnRBkGFXbsYIMSZotQ49Cq6FakEzksMlgWtHxyFWFRYK6XeMrpw5Ig2VHqOjIGn5/1lR9D9+Hk7s0KvoOYwqKgyLkhuFYl8kswIWiWZBFfKUSK5xG3wWdpQlDofmClP58vfgxugB9gufLPBE2Y28kOtCz4otCuy9O8lUeQo+gpfDgd0DiI0Kt7JJwqIRXVZP/imYsXr567hlc7F+FUsGCKzkYz4pGnTeGB59KSKj2SkkzASRYiqHMq5oN9MrQq9Nn0ivIUACKvTZHignSriItLaRaOA1g6HyLqLR+CYoHKbCYVT6BFSHm2gPTtR8d5SOIrhRXKvBsFXWrPuh7wqSlAcSQwRs8KlVQ1tD3PgrpxKXOMwqSEL5MUN7EOGFwuonZNw9KlEhWj1FyaO0wleKnudJ6GSivbqJPQ9kVd9QTRWzpWWFXiQLRhuto8RjINCdFT6YLUVBfgv/pLJXvTu34SphqQr6ngiit7MLsKyZQdoronRQipfJv6RIR0j8gguKvkLeFUKK/BcQPzYVC56BixPI6IDO0xBggzMioJroGK44M0dBIGiEkR/bt8K05otdCkRWcKEpxj53D0VFZBe2Rdd1Q6JOrOkRNtCaxWOio0dKegbvQoYqiRVwirMUNmKsZAUmZuvgufMtFTBQdph+IridBTfCbFQNwcEV1WIee7RisHwIzjHbu0KwpxVDkOC+eGK0Gu6tCFZI2ioJrvmKhWSfYqUxX+d3OFXDXQMhFtD2xVlVKWYV13dUVU5Aafklw1h0BRJYp054qB6gqfEfbhWKjXeVOTlRXpireyYWKvT4pSlNxUhoVKUquKyVQNnwNaFbCovIN4bGWhaYrTxXMd1nFUSgGkxIWTFxVrkC5VCuKsUVJr1H5L8JVlANIo03ioOZJ+zPZn14hjmNCVA9ydFE27GuzFhK8tOGEqP8l2bLcsfhUvCVTNTEgCQ5nwlbdi2ZkFfBj25okACbukTWygkOYqrDhbPLuU4kSgumrwGWCsSpJzEvIyHMXEqAm7UStcSorISiVkTdhJVU5lUiJNinRR58QRJXC1ORgOJK4iVniS2cLlgC7MqJKwiVKkq5pLtplELnkgMywOIQssgBfFexQYA+d4lL5hD7yVyC4CByIv+CGTuOBcWEL8vWiVHy27wTiygDWUyWZK7Ewv/V48htcEfZE/mFywFjpOJXjlJ5fHqEQTg9xRG/4o6A84B5K5qiVtAd5mImHoASXkcIcpmxLcxs+Al8mu8Y9g91FLJWJSrmIvP/OyVRkqKSLaznTEFZKt9xhNFluwUcE3orNtby4IUqAOTTUTdrBOC+d4Fsg4oYpSuLcd0Rbgap6S2nygyjilfyMbgczUrnIYIZKU4L14fFCRChTEZTFOToo+kj8F3MgapUZSuDmELtdqwlH0tuz1UVqlVNKxyVnUr/AXWVNoloITGUFRRFuoY5St2hQ5K5aiGUquMAUHValYVjcHwj0N1pUlAsOIt1DRmg4Q4sch/5gaUNyVHj40UhuaIVStfhbdK+Oi/kqwsaGvmN/pYXVIo+ORhjrZlza4EJ+P3+TkqhoV+yFclbVKsTAcUqJpUacDhGDZKkaiU707MRwDXUyabNBYo80NapWpYAoOmDKv2Zk0IOpWvmCqfDBIE58cMqsZUEmigGiBk+QcqpRIZW/EwcWUlK+aiAjRTEYhFPyokSIKRZJDER4QFSrqfJtKueECUqnQCAyp9oo1KoxCDLAgpXAyo5MNFRI6V+dRhjpVlyC4OYUS6VsSRMP5aITvGbVDHAmksqRDqkyu4GKLKsKGhMqNYVDsD8hrjKyD6MJo51CmSqGhdzK3KoqMq2nyClHpgrrRFYKp8ypZX1okxlRQyE6VWsqMpWciBRlZzKj7UzMrzZVTvVgHjjKk2V30J8ZXjQ3lrBh5Hls2kND0nkY3plWpRZ6VDMytyLx0VqlbNIQ2COLVKPqyFO5omHKg6VWcNapWXPjThkdK0V8UUrGZUV2RalTxI0ulAcraoZIE0LpWTUikYXsqmByOytj5G7K4LgApotZUWyoG0J5K+2VfMIvpU1yujlZuof6VCj5XUSPPnVlfoogPZBcrTXppSA7lVjRM96n7c87wxlxEfI9KnOVtiNfaBCysplQO5KrkacNBpVMDnLlQuY2xGxdAM5WcZOyGNjKwOVSlhJ0a+SoiSI+AaF8v0gp/4Wl1deujK76GwUqZcaryudhML5YBIp8r1qnEDlw4MXK4WVlSLd5Ue0SdENNNEIizCKMpV4vm+SlNmdt6zkgP5X6ypncpvK2yVhCN2ZWy0W1lSUOOeVJcqePpY0FBlQBk+QckCrnIZ80HHzKVoPGC0WRJCYSBN2lfnMrHm/8q0aIjozeVB/K9zUYOMr7whyullZi9MqVNNFBpXAwU1lZHKqJIFCqeKJg+XPStQqvBV4d5aXxpzm3lfulMbkvz4UpX7xHGlY1K2NJYCrf5VyuHzlTQqzAa/3ZyYYgKt7cItK42VRA0SFUEDWgVTrENhVNtFJCYB+HqlUQqqJlUiqIki0yu/GhDIO2EacrXPwkyqflfwqxH4e0rlWVgKsMVVWlO58ScqEpWCJEwVXfK8DwiWAs4bqKp2etVK9qGM8qPeD0KsI7DIyuOV0irlZXgeEwVSVuS5UZir+D6iKuegrwq7hVsbgrZVnQzdlfM4ahV+ZclMm6yoalRwqxWQiPw+FXlJFWlRXK8wawcgmdq+KuMGqoqzuVzKTapC2DXgVcskRnQTO14Tg0o1elcgA+JV2SrP5XFSXJldZDe2V1r4wlWCKuuRmUqreVXPkLUoNKpKVaONWxVSSQHaxfLXKwBnKnpVxi0fZXIAKDlY4FXRVLCr2UqaKtKhvdKl9JxSrjji+LWEVRTK7RVNMgI5XxSpyWofKraVnQ58zh2HSqVRxk9pVeirj3zBEOQAQVKm9JhyrlFWXJKylWcq2KcG/kITSvys6HEpyNOGHCr7lUBKtoVdvjcRVlCrYTGnKveVQMYoBVsUt6/I/KoAVZTSnxVbkrq3CKmAVghSMZ1JDBjPlW3PlUJlW7ZpVXyrmxJQqqSVfyMWZVHCrkVVwDQQycaSoIKw6zXpCsyteKvz6FoIb8q+SAiHRnsIAq5HynGhWZW9QDBVc7seEKuHAlfKpdFkQYxzV/8H1QNXSJgspVfTdURgCuMVg7yVA5CXS+RJQYzxaoGKc32CjjIWL+vnkPoLU9F+Chlwbi0PctCP43TU0QNiqsOUKg4sVUAHBBFVwjSh0ueyqMKlys4dMddWj+mnMhVXZ5kAVZElfVV8hQ/ArYvEvflK+QDFpe0vP4z5mlmV10DKVXd4jZW1FWwaXS9NXybbS7JVidSQVcLIXp6IKhFehWqsWHGKq11VRH0iVWrUN9VZR4EQ61CCt+jpBXQiLx0EtJhGV8Q4EvAhVX6q7fZjqr+SgG0q8xcQWT/AHBYZGjpqs/+VSoLNyNZ5EtDGFmzIHFADbyWjZUJw5qpAYHmqhDCIvgPMBIFgzVdKOLNVghZlBCXMErVXnc6tVQUpYYDaAILVe2q01Izaql1Be0oBkGijBqeEGZMpVwXGEnmiqcUM7o0YmaghnQ4K6Vfzxa/xCpUAZPl8fyVdyVA3lvPH9lGYYdGNQ/SXQZcpV80G4ZuuRcaQu0wswn5xB/ZEXacY+uhI+Wq5SpgycgEbxQuUqQaCXjw6lBpwKxIokSbIGPqt3bAsIG9VbrcC9TDj2HVbcBG+kGYoApBPqsh8f+qpTgfhobLhjqo04OJAUdVTjp+aEfikcwNeqh9VgnAzMlzqueZIlmNvUCLNVcSJUrqYIxKDDVJ80HazVMwQ1WFjIkQWRJp1V+YyvVU7YadVuc0yNWlEhQ1cpjNSJ7iCRZU0lnF/B+q9wFcGryNX3Mg2lWQjJse46qldyDmPUAHZjRi4qhIL1UCwrQ1YsSIZoZmNkLbLFClauJq4E+/dJx1VRF3xQh3qR3QRmNGLigmlDJK7NBHsdY8wWQcav7zNBq8GV2mT9PEUaoiBZOq0okWmraNXASktxMk+aSue6rDNVOgBAyUuqmzVGIM51WmavbyJoSCzV/CEXRgBSN1KKgs4zVI20XWTeasgicsUCUkloBD6mU+n7kHTK6ugEQF9ERYytY1WlYJmVnGqX1V+zN3VUgOBLVls08NXdAUFBf5KyPY9GqhoWPgGR2CuAQClRgoZNUfWg4+CLIiTVlsCe3JE7gU1bUCMKQuFdQag6wOQkBJXLKInTke5laiGs1TRq9YwAPL4rgkcE5mWVq1xwLWrMtVTqvY1YToM9V1Grx1Uzbic1cOqk/g9SxMbjdasiZB5qmx4XmqHJDzarcJByqSJkyVtZNXA9QnlSs6AjV+UgQtXTOhI1ZNoZK+KWq54Iaar6nuOq/PcMpCQMaLqt0JMOqhrcYE9axRXaoi1YePKTV139ptWUmDd0Cp9Q5GM2qifSOOWbRkOq0QcTdSJmY2ar+UCpq3TVrD5etXzqu+QkWDSokbmqQEJ0jCLrotqywBH8q6UB2Pmh1f/pQlkh2qitX7qoCkCDqurV05QVcaA6rwnhhqwullIw0iT/qsLpTFqrYkGOqnNDrapR1biNVrVX206PiWeQgyWUzX0oMQwqNXpMQ59LRINi+35ZjdDc6tOWPlq3zgvir4NVRaq08s2jOLQJQ5URizEhs1b1K5+qx2qmvLw6tG1fIUJLVh+kbNVmiB01X1q7dypOr3HizapMKF9q97V/z4OdX2SKw+Lx9P7V5WruBjq6qXVduqoTyY6M4nSIaiN6io8KNVIcC0EZbarJ1UFq6Vy2iNAtULp1h4BwtdLV7GqfdVgarB1Sh4HK+TWqPyLh3iI1Y9tJnVQI5jjjdbUM1dTwNOJj20DtXsuG11Sjcf3V4wFNCRx6qJkAFq5rVpypluwcJHq1cJk6KVK3j6cSyKoj1VuqvzVuoSE9WH6WJ1QNKffU09cB/iJKh2AsbsbLVTsQfNUS6t7cDzqnbVcrgU9Vcas+VITq2LV/n5N1WiNyUyYjQXjVDerXEiB6vx1RSkUDVoerP4RhMtH1TttarV5A0GdWH6Vh1c9BKXVJmqIMzJ6rN1QRqgYaA2qddWPvO4uJPqyHVkw0h9Wp6t8+dEBDPV/uqwgLZ6s11duNPPVcjM19UHoMh8SXqyZUdeq866/vKWWvDjDbVRmS9+W96sEGmdKj2uu+q8jG36rj1YBcUHVXequ3x78rt1Sz6UFhEBrrdXKUlO1b5qqXQ+yRKdX90gr1acMcRGP+qqVo+apgNVatB/VZjxydWc8Lo1WFq5sad6qmNWu0JjIJga/3YH6rUDW/hPl1Yga+xG/+rRxqUGkkbpONETV4DJ/ZDMpQ4NV7qlDaWGrFJQ4at0kk/qaXV/ur8gGXatENauqoHVKGqKfCYjT91b58nPIeWrgDXOjxG1bePfr512qldVeShV1e48KUou6Q0tU2PHXVaR7aA1m/iEBrll0UNXHq0w1poIg9WQXNkNWdqnoxNhrz9V/RO/PkgC16Gw6zzZAFDCg2pwOI8IyuqruEwVSG1WPQ050pYBg8zUEIvUfuTYPMheB6Kq9NDCNUwam6qciyNIb0DjVupJ5ATVgEQudXx4AEvjCkacliG43hytLnt1ZKATwhbuVXCn5WTbjsTlIW6RvVXHQAHHGyibqlw15RqPygfaorBBAKjCIuuqbdgICp2HKZqzI1lw4QKjjqvDwH/qjo19z5wjVu5Xxpm1NSnhpw5OjVlQy19F4asWCNmAgcpRU0+HMEa3w1vnyWUzLDhMOnbeN0gZQ4IKCPvJRotfylo1W+r5uYkpQyHL58jjISRqljW1xD6NTCOLfVIkYx0a3kFm1Xe4LMJNRqJvC6riM5IwuWbw5xr82Eu3RvZkUauY1xbMnKmhyiONf1ih6SA2hy2y7MF8rKjJDOIbkQgTWKeBbVdwXf41so54HQ0JHkaKCaxLOEJrZAHKxABNd9wZtEyJroTX2uXBNX2qqtVIJrBC4wmq48JeMDE1GUY81Vajm1HH4QFAAKAATADmAH1HE4Ab4ooAAhTQgAAAAMIhvKEAMgAdAA44AaayS6w+Us0QdCU1oCRwBzAGDrD4AJlsKIQMOxnil7AAAAL02ABzWWgukegmaw4AA5ANqOLcAEAA6TUgADmAMIAdgAYAAPADfFBAAFOAEkAgpqD9A2FF2kOXgEWQJIAJTVSmtXgNi2a+sdZJ4jS6FlgADkAYQAu5APAAoAAGADEAEcAlQBsqAxslx9HeKPAAsQAhAAoAD8IH4QWwA1wBmQDLAD1NcQAJjQ0bQ1TUamq1NUYAHU1IAA9TWLIshKIaa0GcP+gJXBmmriABmAcywcpqbTWcgDtNQ6a04ATpqXTXtgDAAO6a3wgdkJOvRCAG9Nb6algA/prAzVgAGDNRmAUM1rYAhADtgGEAJ2AKAA3xQSQBRms1NdYAKcAeoAGTWMmvKKGya8QAoAB9TV5UCfOMMuB7yy0gBTWJms2LJu2BuIxch0zUWgAZjEtwXjQN9ZlgCKmr6ACqa7s1MZqfABxmoTNd8UFcqHMRb/KmmoIAJKa6skH7ArSyNgHXNbaa+01jprnTWumpLNR6a8s10JBKzWW8B9NRcAWs1QZqLzW/FHjTECUcM1sUQdzXamt1Nemmf3gDBBJzVfeSXNbRWS81PuAAm43mtzNXeags1D5rizWlmvPCGCqV81LAAqzWfmoDNd+anwAIZr40zNmpYAK2a9s1nZqhAA7mt7NTDgBk1AAAReDeIABhzUcmrHNQjAe2ARaJQqjzcDAADOa74oTRZ+2xWMlPNeeanwA0eBmABmlGzNRuaoEoW5qerRAWtjNSBa1QsN5At5iJtNYta4AM81UprHaDwtmTTGcAa01UdZagCIWusAG6a7KgWFq/TU4WvrNT+a1osYZqiAARmsc+BJavc1UlrOTVbUGYbCj6RsAUFrDADKWpYbKpa+C1rgAtLXogB0tRcAPS1NZqDLUNmt/NX8UQi1IABiLXEAA7NUYALs16pqezXogD7NfyABk1AABVYKkdFrUAAjmustX/QPUB4tBo2TsWrHNa4WcTAz6lsmxbtwctW/SXK1wcxhLVggE3Ncqa8S1EVrdzWNAH3NaBaxoAC3o6yVLSUUILxa801N65MKwlWoQtfma7S1yFrPLVoWq8+Asdby1IAAvzWGWrwtY2av81EmIALWRmsqtcBa+M1tVroGC3rymoPIERc1ilqMzWQegVLO1aty1nVqPLXdWqfNWWahck/Vr3zXVmsGtb5aoy1EZYtRz8gAstdVaqy1Y5qUSEohGzcOCJBy11h42rUrIpmFhta+81RZqerUakl5AG+akagH5r9LV1mr8tcZavUAF1rDAA1WuktTQwea1a3lXiDNWpWtU5GJBg61rNLWbWp6ANta1C1n1qkQDfWpCIL9any1/1qTrVNmvOtVNayS1M1qwbV/0AhtW1QMxAS1q+LV+VlWtXDa561sIAOrVvWsfNSjavjQ6Fr9rU/WsOtUNagG1p1qgbX42sstYTalK1c1qviRTUCZZNDa5c1VNrFqg02ojLK9apC171qdrW9WrZQOjaoUAmNqjrXY2pGtf5as61JQBgbWg2r5tTdawW1rLBhbWU2thtWLalgAnQJbzWI2tJAMja581e1r5bXFEEVtezanG1BFq8bXRmumtQealQOJNq7kz/lgUtRTapysotqtCzWmuZADYAdy1SNrpbWM2pjZCzajG1bNrjrUq2sBtQ7azU1TtrZrX1WqcjLvfcm1LVrvbXw2v9tabaws1DNqLbXM2qttbUAG21EdroLWq2q5tY7agm1ztqVsXuCp1te8JD21ydqDbU+2uzTBLahG19NqULVZ2r6tTnamwAedrlbUF2qjtera7m1l1rebVjmvjtVNQMm1etqvbU12tTtXmaxu1H1qmbUt2swtQda7C1Hdr9yyF2ujtVVakG1V1rEzUD2shte7a2oAy1qRbWj2vFtX7a8e1UtrM7W7WuztTPa1m1c9rcLWd2s5tUva2O1RNrfADl2rW8vyIYe1j1q1rV72pNtRPamW1qNrssin2rDtefa4a1l9rcbXd2uLtTza0u1dVr77UHeU3tTYAbe1+tq9KyG2rUtXXa/e1AdqzbVB2ubtXLa7+1Ctrw7Xz2vwtQFa6+1Jdq47VgOrKfknamG1MDra7XDWgQdena821x9rp7VZtHbtRfahe1XdrQAAa2tXtWoWEm1BDqn7WtWpftUba321b9rD7VN2sodag66h1GDraHVYOq1HG2ADsAIVrSLUsAHItVFayi1lRQmTUuaNZNUlahi1iZrEmAWRGFJmmefk1WVrY4mPVkIdcuawOYvohszUggBEtRJiMS1PgAGHU92pXtX3a5R1o/BVHXQInPkMPamTKsFrrzXWmrfENw6rq1yDq+HW8gDjAANa221kdrTrX/mtMtYBa8x1mtrGLXWOoeYJC/ex1MFqK1TZmpcdXTanh1k9qQ7VeOtntX9aoR1o1qArWiOrbNeI6sK1ZFrKrUUWv7NbI6gAASvdABR17JqTRx82rSKvLeX3ybFqOLVGAE2LPaWSssEDqHrWtQGArOm0AEohjrSrWiWvKtaY61U1QTqmHUs3l/MZtdHRKDlrKuJWlhIdZsAGJ1ktq3HVH2tltbyAewsAjrf7Uc2tDNf46sy1GDBGHWWOtprO1YCp1y2AInWGTHasNE6logEzqtrXuOumdUiAWZ13jr87V0Os5tek6ki1WTrJHU5OukdXk6tKgIAAAAAqAAAFW4AFwB6LWlOsYtQkUWbgGVrqnVCmpeSjS2fK1UDrHLVXZhYbKpWTh18Dr2nXGOs6dY0AMx1QDre7UgOu2kAI0X51bDq1rRjADHtYg67yIZzrMHWpOpMtcs6wK1wVquwA3Ou6ddGa3J1MVrZHWDmo+dYo6r51Vjqu0hOuQTDho62c1Wjqyaw6Or8rHo6gwO4trLqxlWu3NT06tZ1NvA+3kifiT5EM6yJ1UqBszUaWrTte/a4O1L5rxKxzOuSdX/ai51izrxrUBOsmtQi6ix1SLrJc4MuuFdSC6hx1UTquXW31gbtXE6j+1U9q2UCJOrPtfK6hZ1BFqrnWZOp8AOFasl19zqKXWPOtedfZ8RK1JTqSgDXWq1Qo8IRFeVTqsrWAutu7MC6z210oh4WwQurgdaQ66F1ehYTHVwutJdTHa3B1t9q2fYT1mcse4pNF1VhYrTVQutiddMMaLccrqsbUpOtVtUs6p+g1rriXW2uuydfa6lgA0VqSgADmpsgNS6t11o5rEzW8TFugrIDe1yTLrOLW50u1rGKakF1YhdnLVJ8ngtTy6iq1arrgnW1uoBkHtBECgaZqQXUWmpubKm6yOsBrrJXVGuuldQuSL01STrs3UKuuEdXm61V1MbrgHWzWrWKUO60IQI7rPbVjuqzNfq6sh1UrqUHXCMGvgDi6nN1gNqC3WhWqLdbc6kt1cZqHnXWAFedUOaml17rrlHUseCNNftIH11s5q/XWONgDdUpasF10oh2rU9uq6das6jV1b7rmiAfuqrtRma9F1E7rVkWuOpicE7iM91S7q8XUruvSoJe6iR10bqPADkuvLdZS6sRFLABPnUvusPNUuHAjCpiV6TD/OupLH7IbR1bDqOXXyB1DdRdWFmsQHqo3UgetmtZp8G4aDCxtnUZED1dZC6yd1h7qZ3XHuqRAGa6n+1Frq7bWqWvMABNa8y1fLqNXU9NC3hGx6yD1I1rdpCceto9czWHj1kzreHXHOtQoAJ69B18zrhPUiOpbNWI6wt1jQA7XWRWtLdTI6x51AAAJTJhrrrkrXXWslYNxoGOM05qsrUG2FCLAbYYe153g8GBsSEA9R063l1fbqpwBCAG6tEi6tAQ8mpKUwRgActSBAQS1Y1rFPW02oOdVFuTaQYUx9gC6epkYAfajN1m0h2wAJevbdRmAECAJIAfHX/2vC9aJ6lV1qHrdPUZOv09YYAQz1mHqHXXYesedYyal11+Hqa3WHmq4UOukTlQxFFSPW+uqVmK26tl10pqoQiymvFtW061tMEbrYXXGAAw9Tfavm1Cyh6vVaJzgoo068EA+7quPVjOv2dYa6lT18TqXzXzuvNdYu6y11InqxPUrOok9cx6ur1wKo1KBjetHdZmaqPg4trxnWzesOdVM6z+1FZq0HXW2sEdUh6wu1aHqSXVSOuM9fe69EAzrr+Nl4eufdTV6ksOfNweNCfuubdZcoIF1bXqg3Xgupg9TMLBj1/XqmPW32s40PJqEfoybr+GxA+si9cd66L1RlhEPUrevxdfm6gr11zrr3UYeqw9fSa2R1rzqXvWWeqUdYR657Qwbk4KJNupqdd+6l5Kw9qAfUAetftT16pU1Xnq13WIuuY9SSqGmE58pofVpiExdaba7F1C7qlbXnur8dcq6gl1t3qMfX3ervdY666wAjJrkEBVuqs9co6vAsLPqAsDfepqdSy6yssCAKt7W7upXNfo6rr1CprPPW9uoZ9eq6zb16NADeJ/6BFdfJ6sV1h3qZvXTurm9ca6hJ1rdrYAA0Ouu9cZalD163rvPX8uoWjLL6iSVRvqOPUm+qm9ZSAM31iXqTvWqerO9RharN1PPq7fWXOrR9Ta6gz1xbqjPUi+vK9WL6qRRxTqpfW01gzVmmnYuoTXqv3UteqarKEIYe1HbrOvVe+tptSD6+F1Ovr+3W01jA5Mn6+y1e3qJvUHetz9fXa831fvr5vVzutPddz6rL1irqcvVreqLtYX63p1zVpPEKl+rYdRX68ESxtr03W1+st9Qt6hv1S3rg/XI+sJdXp6q91Efqb3VR+rLddj6x51AABNWi11XqhvX8ey5MELseX1QprmmjcWrGIGX6z21AAhJGDNiqcdXXa7l1WvrgPUbevB9WJyQMQeDAN/Wyer8rBtgd3gdjJj/Xcerg9ctIRm1SPrtPUO+rb9cvaov1ZSQgeo3+pyomw6h/1TzZ2rQHutf9RUUd/1jfrznXCOon9YV6qf1xXrI/Wleoe9aL6p71LzrDwCS+oJ9T5MFHAOkrHiB/6FJ9QC6371/rr/vX/uvc9TT6/P1A3rY3VlOpePDgGiywd/qnKzQeo59etIGooH/rfHVKur0LK36wX10/rMfVlevn9Q+6t51o2YV/XXWuJMJGQQQueIJN/VhtkIDT+64gN9pZqfVV+qMdb16+n1P/qO/V/0GEDcXYTSx6bRGnUMBpp9VF68KYCHqoA24utzdfz61H1RFrJ/XoeuF9XP6sbMLABH3V4+sEDbW6mQaJzBNjmoICWGJlatP1DnsiA2U+pIDSG6/v15AawfVlOvsDUk4K3GwXq9vVaBrkDeAGrn1o/qm/XLuqMDduQTgNCAaZ/VIBuj9bwG9EAsVqbA1verKdSK4HXi9ut8A2CtnociK2Q7MkDr9/UCqBqiB56mF1igbBvVjmrimUAjADiO7qWrXellgtYwG3j1Hjr/tAsBuy9at6vL1jvr2/XO+vjaSMuLr8tBQag0ZmrqDUBIBoNFvrZ3XM2pH9YJ65b12nrv/XlBtrdWFixbMmSY2HWDBvfAMMGwf1owa+rXjBs09UJ61gN9trAHWdBqRdWEUptMr4h7XKNOqWDX/ofv1OgaM7X++pNdUowFoNzfrsHW7BqUDV0Gv4SrqkivyOYEWDSiEIYN2gb4fVIOtO9dcG5oN+gbefVNmtiDSV6rH1lgamTVxQAwDbS6w81idKH7XOBrI9cKWS8grXqs/UymrBzKEG2n1kbrQfUX+qG9f3oWENPfrLTUrBsDtb8Gz01GwbLvVaeu2DW0Ggl1ODr13Xg+usfLiGugNe7rK/UReur9b76wkNVwbiQ3W+tt9eP64ENiAbQQ0MmtedW/aeP1mAayqDfIKp8OpVcQNwpY3A1SBo8DTIG0gNaIafA1YhsYtRT4XaQcXg6jmaBpTdQSG3QNmbrbg1RBvYDe0G2AN6PquA3mBpM9dYAWK1FnrbA21evv8Bq4YKs9nrZzWmWTyDW16xxMYXq+/VcOvRDX16gv1jwaNXVOan3DGI05iGKvrag0fBuWDV8Gmv1rIa6/VjBo5DVd65H1X/qqQ2M+vB9V6GgduwcR3g0wOrODS6Gi4NFDq1PV12G1DXi66YNlAbGLVxhsWzDbsRMNVpYNQ2XBtDDesG8MNZIbWg1q2vdDTMG2r1NUQnIy5GsLDfUGoMNLIafg1shpldSSG3O1EYapg3Rht19bGGusNvQadECNhs+DWiG1MNRzqA/WamEzDTd6sP1RXqQQ08BrBDaZ61IN1brV/WAXBmzHIo1P1nFrHPUOFmc9XQG1z1cRBZQ1MhvkDXT67X1jwbfPVPBotSta4J84yIbwQAZeubDVi65gN4DA4vUmBoS9XeGp3EKXrooghevS9eF6yINyHrog35epMDXAGswNdzrkA0x+tQDcv6tINQgaR/hqBqDycEEFwNP3rJQ0U+roDVT6/cN3gaz/WMeoVDYma/wIFfRoI1s+oxdbeGzn194aIg3QBp/DbqGgX104b4A2zhuAjUkGlgAzJrIQ0EepLDn2mZfyKZVsg3Rlgo9ay6qj1mfYaPWtOs19aUG48NNYb6I2rFi06AK2AoNUprdXWe+qZDUd64MNrYbSw2muvLDVsGysNUYaHg18Rq32HjcbEIOhB2PVXmr2dcp61YNfHr1PWyRsmDeSGnT1/4aDQ1xBu4DZRGsENrzqWTWveqXDR66kw62Rwhm7ihqkDX966UNH0BZA0HhvDdUeG8/1Tvr/PVHhDsjQtEHCNsPrmQ0vhq1DQCGkP1bAbcvWkRqMjeH6kyNRobHvUsAFitfI6qyNCfrZtSG4QeYBWOARgsEaanUm1glbB4WfINDlrGUKQkGwAMOMgx13EaFA28RpzDdL6lEq/kRW3h7+patVXWWB1AJQJI0thsntZOG+31v4aOg0ehs29RYkKqNzBQao0ZmrqjaM6731Wka3/W6WpCjeP6nsNv/qSXigkG6jZUgIANT1qq/WNRsQdc1G0aN3YbFI3lRtq9d9SOs8tRg3fV7ev6jZpG8ANS0bCI0GBvodRQG6kNQ3rsYhNNMluKUC2aNHDrxI0++sWjca6lqNV9rVo2nRtzDa94Os8GcReo3Lmt2jab6oaNEAaRo2HRsBDTsG6sNa0bko10/XELuj0T6N9/q5o23Rt+jQdGiYNY/qVo3AxpejRVGsQcDzAPo3XRuptfNGu6N6dqHo3LRoMjfqGqKNFEbEg1ghsHNfwAWiN73qLcgdwDI6taGioo8Ia5zUMVnhMOxG4Csa5r1LX0etQjZiGryNG7q4RDUxqCDZ7a0SNcFrWY2wxrTDeOGjT1pIa5I13BpR9au6jqNt9qzkQ3DSDDOpGxx14rqp3VNRuFjX8G3SNF3rOw0VholjQTGmcNPIa5w0DmrCAOTG7ENiARF+ohuuYjfTGyj19Ia1fWcurlDezGpGNMYbsQ0nrFNjW16/mNz/rYPUD+pDDUP6va1osbNY3ixp1DeFGwJ1nMaaQ0EvjP6iG6931Gka8I1HuqaDerGoP134apw2RRt1jfEG3kNBTqwI3WRuUdWc4EHM3ShG3UZRqFNeYsoksDTq9vXjAjACErGw8NGIb7Y29htX9fdKSuotKRtnUkVmDkCXG/aNqsaQ7WnOrxjfJGtqN2YbkY2HmpWcLw8LpINca6A3DOtgtQNGtMAQsaxw1qxpHUB2Gtu1XYb8Y3chqTjfrG2R1pnqEo34+qhDaomWsERs00ow/ErccTaGjcNkgaElxteojkAuwZCNLob5Q1O+tPDRq6vW8DIRs6i3IHCwhE628sErhzg3fBvCDacAR8NQVr9RzvhqCjcl61+NcwAjfUflky9URGwwNJEbA42dBtPjcx6zHgL1hkgCUmBvjZ72DUNj8brADPxrfDV/G9+NRlh4E3fxrqLL/Go6NfPqAE1SxumtcAmy/1xfSbQBtwlNwJAm5Ps0CaCI1PxryAPF6t+N+EbXw2fxpQTdt4NBNgMaKQ2AJpPDSwAPz1zHrxCjEzT2jN0mDQNOrrKOr39UjjZMdYKNu5A4E00JsQTRcAZBNPCaYHXFyDjja1GzBN4nqT40sJrPDewmteNV8aCoDD2u7wAfGly1KYaH42kJtgTeQmp8NlCamA3UJtS9Z7a0L1hUavw1/xpkTQHGrBNBNqcE2OxtxXFKWNKMvwRVE39xt4Tef1EcN2ia9A1CJr0TS/G58NVCbM3XiJr5jWMAH+NfsbiI1WJrkTUAmhRNoHqikCtHMlsS4m2+NJCbPE1kJrETSImvxNH8bjE0iRqCTagmkJN/8awk3tRuwTZEmthN0SbHgAEJqIgEQmvhN7ibJI0wJvRAMIm3xNhib/E00JokTcEm/SNbcbZE15JpsTQUmmkNOGoHE0qJs3jcJGi818Sb+E1JesR9Q+G7xNyCbRE0UJq/jY0mrJNzSaJY1f+pnjaZG4mNA5rn4BGxsVDeqECLa7HwHI2K+oXNUzG1c12ZqSo0eRrQjUHG1f1aybstrKQAVjQp6gEoyYBvg0lhq9jczan2Nk8atY3+xtb9eNG5QNbJgTk1I+129YEm431Asa67VXJskjTcmtYNMkaNY0PJuyTRe6siNgEbb3UWBritWTGwUNy8b/eDAdCCyMrcByNP0RFuwTQGHtbaDZ+sBuiNfWlxrdDSdGh2NITqZjpuZH6DSNap8sbI4YY2NxtHjTGySF4wKabfVTxpaTbkmjuN+KarHVf+iTBH7Cl2NaEBpSzJhrTdaOGokNL5rqU2xxosTU9G8uNE0a/yAspu40EimlxNpKauU1huo9jVJG25NXnx+U2PRoAdcKm15Nymj5SzZz3ZTVKm4sNTca+U34vBpTZyGxGNeKaK40hOrFTU5MbewETqtU2DJu0jdHG0AYcAKBU3oJuVTUamkVNeVA9vBEpotTZymvaNsqaAU06RttTa1Qe1NDCaqw1OptVTf+QBcsT9ViA1Npg4uJ6mi4NuMaAY2hRqBjUGmi4ArCbwfWVVVDTcLC7Z1TSbyU2ypqqTZha0ZNKSa6k1pJvfDTwm4NspkZpE1CpoTTbYmkJ1RGpxU36dHTTdMmzNNOgbs02w4GSTbUmgRNBabJk2BJuLTfQmuNN9waVU2JprPDWzIUNNtSJa010Jp+jWEGnRN1Sbc00tpqGTc2mwtNHablKxdprGjc9G3u1Faa6XUrAhsmD2wYdNuEasY2/RsbTTUmgxNraakE0NJrnTXb2BdNhqbfA0hOqlGDZMc1NkqaPU1Wps9jYCmmYWeqb/U3dpsDTeemqx1l6anJgbppvTS5iaVN7saeU1thoXJIqm1uN2saXk39po/TWGm91NP6btU2Upt1TXampVN8aa302EevAzUOm79NR7BoM28psAzU+m+DNPaaE02Seo/TWg8SC1PCbLU0VJpVjTBmzDNcGbgM0wBtAzZJ6wlN0FAK7CQZrQzaOmr1NOqbyM1+puwza+m9CNhHrXU10ZutYAxmtTQUabrk0sZvQtUBm2NNi6be02SetNTQRmzVNt6aSM2LRqEzQqmrDNlGasw3zJpijSgGlgAhTr8gArJtrdT1MYPI12C8A05xvI9XU61vQbDqi40gEGKjTimsoNIMbO/WicE2un1YWuNIzqBM3/JvkzWygFuNombP/XtxuozRu6nTNXV10xCG+okTXXGvfYDUbsY1RxvTDbU8PSNCMbp43gpru9UBGxZNOPqXnU+EFhTXRGnKMQUpCCgORvJ9ZcoZyNwbqAo0WZrKjZ3GlQO+BRlQHFqqtjSEGtyNWabx02+xpmTU8mvUNKmaYs1QprizXxALTN0Ib2VAzQUaKDBGumN6Wa5lCZZsB9SUG0qNnka9g2FJpvwFOcH6cxWb1Q13ps1DTF6pTNOSaOA1RZqF9bVm40N6IAHwCNZqiICFXM2lcJR1w01OtGqE56j9gT9q4lBuevwlVxGnLNfWbpY1nRpWzRTGdOhHgbrw0LvCYzdGmyANbmaDI0KRvEzZt607NBeJNoAXZrC9V265x1wWaCzUxpvhjaWmoENM2bDQ1zZtijSAAQp1i4ako2blDbmIuMnEc5sa840E1gLjar60zNvSbLk2HZsOTf1mmWNwgpZxkoySN9QFmoeNOZr/03SRpmdRPG2lNjybQk3PJqXTcam2t1GOaiQaDOv8zQ5m8W1fybSM0YZuZta5m37Ngqb/s0JxvIjXrGsyNA5rtIBLZqjFkigBaoDIMYc3YmEtjX6GjM11HqWY0n+rZjTxGo7NSkbJqjaSuVAQyDcONisawA3MZrIzXcm8LNf2aW/V6hs8zTLG4+wgubeY0ZJu+TW7GpT1FKamc19WvuTcTm0FNofqOc0Qptn9fNm9TN6AbEs0UxsuEodwKpIQuaDM0sRqMzfe0kzNdUakc2CxvcjWXG3DNXmb2FDu5sNzReanZ19cbVc345vlTS5monNBqb7s0eZvJzc6m5IwNw0MQT2ZsHjQ3GtXN5ua482a5rZzVa6gHN0Uagc1qZpAAKZ6gQN4EbX3UeWGlALxyByNu8ats2dZroDfvG69gh8a03XHxoiTSAAJNNq/rg9ahgBrzXEmqBNY2bd02Tpv3TdOmiZNtCat00RZvpTWTm3tNK6au42GbgcTfvJD5IAOYxc0jWoGTbJm1JNwyavE0zpoQTevmrfNY+apE355sYTdYmnm1M+aWCyTcLc+A8cssA3CbAk2r5tKzQ2m8rNTabR83jJv0Te2mo3NGaatc2H5vCTcwmjvNiiaq804ButASK6m/N98bKk335r3Tdvm/NNh6b0k0R5rfzQfmyWNn+b8k3f5tA9b/mkOM45Q1E0ZgG7wAkmwRNSSbH8075tHzWl6y7Nqlr382wFraTcfmjpNdiasMbORlazWUmtxNt+aPE2YFt0Tbvmp/NPibZ02v5rrTYQWh7N5abSC3fOrgUIN0e2Mi+btXXX5v7zWvm8AtXlqRk0MFpwLc/mvfNp6bE82tJsZTRY6k/NjoBuC1iMFFQDF43pNABbBC00FuALYkm+gt2BbhC24Fq+TdAWh1N2ubKQ3J5p89ZwW191x2ge80oFr7zcQmgfNIBah81gFoPTbvmqZNI6bKs2k5uqzYXmomNdWaKvVO5sSjUKGs6MCDZGI1tZs0dSLmtiNVsaJc3mZsDzbimxDNuRMnPD+lSEjcrmi5Nn2aR4055s8dXnmwwtH+biC1MpotDbEW1EIakaXE3G5sczYzmgDNGub9U10pu1jTVmyFNDuamTUp4D5zfV+XhgU5NssCbJpCLUr6tr1oYhmY1Z5rbzcdmglNlOZsSbnJrEja5awTN6uaLc1pFoDTewW6It/vBDChLkwzFgkW/otAebs83FFuGLaUWknN8caX40ARuizZUW4HN/IbNM3O5pOzb2TVEIMXR1s0EBvgjRlmxCNngbss2RFsszXlm8ogJuBouiQxvoDaNmoQtjhaRi0vprmTR4WrnNsWbvC0JWvNDdyzCrgddRarJNFtYjS0WnZN6vqq/Wn+plzajmrottbqyxrs3FsUH0Wn5NL/r5i0E5v49c8WyMNSebHs0yxp5SjCWhMOMxb4S10euSLQsWoFNz6auQ1vFtnjdzm+rNXxaK81dxrmGG2TRYYaWbJA0IRuXzSh2M4tPWaDk0cxrRzav66ktv5paS0jZph9RgWibNd2bJ83uFttzesW+3NwObmTXbFt8LXCmkcQgYs7EnRSDpLYiGjP1bbqTE0ohqXzUyGsEtvWaIS1y5oUhtoMKc4cparY29+oCjRK6ootSJa3SwolvczTIW3XNZTrGFy6lphxON6/EN0ebBi0pFu4ePHmsotMAaKi2ilpLzbFasCAtRa9jCJHAlEHCGhz1+yZfWyXLFQLWDksxNX3kUI3glrZLZCW9Z11QQbJicmAxjfVGrRN/yafs2bBtcLVNmnXNJhang1n2CCAHXcVotexbMY0aFqajamWsWN6Zbjo3jFqbEFOOatNNxBEy245thjSWWirNE+aQM1Zlv2DVWWnjNIWRGS1OVm+jY8W7S1DZaQU1llrLTRWWoh4ckqt/DCakadd2Wost90bbs2s5vSLRxmo5NFQbtBDVlsIzar6ictQBbiy3TlrTLU2WqjNLZaN3WLlq2AC3cfMtq5bky3rlv+jTOWgNNshaU817lsfCMuW2qN0Ma1y1TltPLZuWwgtOsbOc2klo+LXwGjCAPpa7fFcFhDmJ7mxyN7gbTi0yhq8DUfGu2Nwebk03kxkzHPmWkrN95bxC1ElvNLQym90tCQavC1i+oYAF+W9NQohZUlhSYCCLcy65ot2yawi0cRslzTKmzotWpasMBqdkwrdTUOEtJua4fVOZqGLYSW9jNYxbOM1RECdGNLrMngxKboLUFFrGzd6mm1Ngfr2M0vlrtzUhWqotFkbwSpLxqSzSoG9ik2RwKViHFokDccWhvNnZakI3AVtbzaBWoctpKxjwgrlXDzcua6Ctx5bGC30VvbjYhW5ONZnrvS07FuutZ2MNeNHck9EjptHNjXXmrcNJxbOy1N5ojkCyWoPNqzr5C11WtHQfPm6v54dAr80ZJsALVpW2CtsXr7C0thu8iAEmlgtLhaty1uFuMLdPmswt3xRS/pW0G9jOpW6C13lbuU20Fv5LVgWiQtjBagq1QFtYLTAWhit8iaEC14OvywtTxCgtUbC2K3ZVnULTBW3QtwKbQC0BVpqKOlWuT1BhbRi1olo4LblWuN1Jla3K0jqlULTwmhKtMqa781aFonTWIW8qtTBaX80ZVpCrWwWhqtTlbIq0qBxarefmpsozibbK1oFvC9WVWp4tFVb/K1pVqPTVKa0xNN4aBy1hRqnzY1WzvNxlb75huVpA/DNWvpNK+bSq0+Vv6rX5Wvqti1aBq2SFutzVtWzMtEVamq1a2vHTrFWqgtd8azq1XVourToWq6tNVb2K11VpeLaNWvl1zlboGDPVsKrfKcYqtaUBTq2JVs0LXQW3qtX1aR80SFucLePmkatFpasy1A1qsfqZW9ytR1a1C02Fp7LfB6mGtOabLq3w1uurYjW/fNs5bXi3CltmzRsWkvNlXrU43g5oOoDtIWH2FZSpK0sRvnNXjcYEtNsamQ37JscrYxWragtLNAHjK+uOrexWj31uJauAAM5rkzbRW1ItSxbbq1GFqYTSRWr7w65w57i5RokTcLWqiteObHS0ElslrXBWyLNFNbAc1U1pAjdRGlxAPpbl6CyJnSjXTGrZNbNb8K3tFtVzcRWqzNqVqKuAm1sorVnmmPND6bkS1S1s2rTLWo/NWRaVA490AdrfkWlWtTtb1a0mls55GaW7WtqxbjI2eFqqLYOaiUtIlaXc2QlCQAsqaRl1f5bza2Mxstrbsm7FNFxbcs1e1uUjXHyJI4N6BHa3XZsDrbHmzWtOlaUa3olrOjfHW3MO3vZOy2uxsKLeLWp0tMcbeK16Vrnjd4W2mtfhbko6dfUCCBVkAEtrNaU62dlraLWnWqv13Xqba1XFrKjh3W3OtLZB863bprNzRrW12tWtbBS3hVrArUN6qiOjUdiwh77BxLarWhaN5DqJa2z1sbrSSWhZNyFb0QCFOuErd8Wi+sYiBaUwbNABLd7mpq1VsbEc0tOutNUPWpStPNbug1n1oGdZ5WiPNOOba61b1vrrePGkOt89bZa221uOmWzYzHNb9a5PUf1oLrTRW7+tYWa3a2hVpWLUS618t+9aqi2FOtbrVKWsaMbjwk07w7EvrQzG+HNLVrb60OVqiLU/WpM1htU004YNvyLWA23Gt96afU1QNrnrbMmgGt85bpfWOCBmgpZRDPNuzrOK3OZsJzb/W8ote9bVM361qZNcNoyUtolaUaQjloGud3WhmNAtbGnXhFvpzSjm6MtWpbrC7+lUnrZzW/EtQdaeK2TZssTdtWoctsjbcs7sKHkbcjm6etSjbZXW71p1rUXmvWtVEbeG24epjrWdGxfAbkR9M10xstoKimw7FdAaNpiYpoCjQ/WqMtZdbcw2WNtEDX5mwN1KLrus3gNuNLUXW50tHDaqs0L1qHLTtUYyIZybTi0ohFcjUFmxRtATbTS3QNufLU3WsktjzqAACKMKb+G2x1ozGESQ2OIa8ha81+AnabPwWqU1yEwtLGPAFTlE3ACItrobLi1Z1qbEDOEctEP2wgGDV1ukAJDWrqt1ya+y1W5vdrRkWi8tryav/jPDDW8qfwXjQIrrM+xvVqhrSeWkQtApbmy1uNoHdW57PptsuAInVDNoDrSmWjctpZaYG3lloIbXB1OpthwMBm08JvmbZxWtptCebKw1dNuzLXjaI2lgaAtm2BJocTd+WT+t60ghgAmABQAHgASB4bNYNkW9tlajQvaptMYLgHyzWMEzkBY8nTYD5Zn6wJlp+bBmAMFw7RYh0g6bD+bc6sLlsTaQPoDvNoBbaEIML1UwRXmxoC1BbWYmueQveAEW2XZuDFmM2OoNbP8BmxYtrU0PIHDZsn4aKd5ots+bRkQdQe2SxiW0fQHdqBsWSFtwbqi8DEtu8QBkQDfgMxC0W20tsWLC02OoNG/A2W3ZWr2zDPUXZsjRArCwFqHpbUi2yHSd2wCW2wtv4bIX4iltVhZ7ExCttrkK9OO9YYrarCwHTBxbTy25VtmLaAw1TEJZbbBaufYsrbha0PlKlbbBa2EtMLam0xKurFbSS2rksJLatW1JFkz9WhWcEA1rbsKzPNv6LJn6kzEBjaw62ExveLQfWg2tZjaT61nRmXrieEbwiATdhc2AlrwrX3W62NnEbrTVc1vwbXQ27ItfrbsDj+rG0bRG22JtLtaG60qNowTQymy0tuYafCbBN1P4Am235NSbbKG36NtTbezmt1ticaEG3A5vydek28xtFQbE8jXZj5cEG2q+t2DaMzW4NrIDY/W6NtPxaFmQVdmYbVHm8htcqbk20/1oSbVlW2ht7Jbq216oFrbeDWxyYLDae21cVtCzRr2ahtbpauG3F5p4bc66r8trnwxIy/lvazfSWmytgtbQXVAVvOLZU2zOtFOakM1G6OcjCuAfyNfJaN81nlv+rTIWpJt75bUA3uGirbdpmhYoJzBeAo5YjpLTJW391RgB5K17tuHrdU2v4SdOVvviyYDirfcW3ktthaeq2NluRrQhWhdtxjbzI3xZuQbQI2nC0sGF1azM1v/LVKGwCtLkaW81EVtbbcO2jCN8fw0MJIdtDbZpWkZt2lai20e1r/DSW2+Bt3DaTG3MmuPrZSWn4txlYC54iNtFzdu2/utIJbSs0/tsPbT8WqEIDHa/a0RxqnbWw2netJHbOm0ZtqhLce27jtjTaOK18du3rSm28Zt87bDG0R1uBzbFa8vNacbaazQyH2BHPAjCQyKaTMCnAm4teDaYe1MR12ZBOhtVLQdmjOtsuaAG0WYTU7X4aMtOIrqPfU0xpibbo2uJtvqbjwhztrCrf/WketKNJMKjjAm/wBp2lxNNnbcc2b1pCzQH60Z4TnbeK2gZqBrfBYMYE8wxIQjbRsCTXXGvztX2aia2fVtSrbBWn6t+5ZO03S1pwzWNWx6tFQbCMVLAmvYIY8KztPCbYu1XNo+raIWuGteNa200iurS7R02uct2HaVO3nJly7ep2grtgSbfO3FdtY0Dc2u5tDzb1kXNkmjLOS2dnsi2o6mBNth0DON2Qbty3BHGw2tugteaQFdsjpZTyxDdqZbDN2r6wBTZ+u1a3n3LDp28btOFYV2y6duqrL6gD/sS3bXyx7EJFbHOWOGUt3Y1u37FBpbCd2y5YZFaxu3lMAUrJyWW7sN3agEYpgjQrNmaMitSGxru1PdtVbed2/bt/DZpu1bdsODdIAQ7t5TArCye+AG7Vt2oHt53adOybdom7Z21WNswPblu2TBnRdQhWGEM6Lqfu3Ulkm7Uq2tbtKZYhu3hQBG7QEW6bUIPbqSwQ9ox7cUVMHt2FZKyzbdsf9bD2rNsxxwEe2kli+7a9280slyx0e2k9v2KC921GA+PboyzZmmR7eyWW7tprak6x1Ou3gNz2i7wU7Y2e3Ldr57Wd25nt1Pbxe0M9q+7XN2/EsRIhLu27dtp7Rt2ontZkARWzOtpJACF21Gt41aLcg5nDU7fl2u4tSDA7y1JFrHTWB2h/NSXb+q0pdu8UPOm9LtNXav827VqmbR52+YY5QZou0ZJqK7X424jtm+ayu0I+qcLcem7xQUhaDm3Cdrq7cw0BrtlnaDe31FoTDe72r+tM9aIyy0QGC7YJ223tMjbsaHjAl0MN52xptLXbI+0BdrHjb+bOPtMnasw2B9q4acH25PtofaInXp9qnrYiWhzt2fbLc37NombYvWioNzUoLO02IjD7aX2+tNhda+22V9qCbXn2ncteub6u2edrMsU326UscXb823cVqC7VX210tnfbJm201mPpLl2rztTXaMk3N9rs7eX2tvtI/aO+2L2q77WU61Tt0/a++0l9oH7a1261NoWbl+0DttnLYc2/YN9XRN+0dUH77S5iQft9nal+2x9tH7csWsFNcnaPW2CVredTR25TtH3ry2zXKDfbU5GVDtclbmS0tttcbbX26X10iwqkh3FrTEA8Wyctvlb4+3k1vI7fxW/StfAbNYBG1sshCf4BWmX/apu0ftp8AF+2vBtVTaOO05RlBIMgOqLSxVawB0gdp7bY2m9ptKza023TZsf7W+Wz1tpeaKS1v9poYFlDJqMppE8m2Sht3jagW+0s9lb/+0alukbe0mrLta9rS4hMDuQ2K9W89tYzaUq3XVpWrZAW2qtmVaya1Dtrt7U8GwBgmtxGjkAUFVLdjW8pNEA7zq2ldvN7d9W1atQ1aka2DttLrTtW+QdfdVuk2lgmeGMIO0Dt+Naze3iDuS7ToOqQdw1b9B3ptq17XwOtQsjA75jl3KHMHSQOuwthNbyu0QFuYLboO0mt9VaDB2Zdvt7S4O1x+68bmB2N5rmrZomojtkA7Pe1aDqJrSl29at5iaZB1BDsBrdr2v+grg6cYBK5o6rc02v9NSVaL23aFviHT4On3twVa9B0pDscHQ9WkIdKgd5ljdQCUHRBUDwd6g6Su1xDusHRb22wdv1bpB2BDoqHYYO/z1NQ6xGCMQG1CCA2+KtuQ6XrX5DtEHYUOlod2g7JB3tDvsHeUOtRtaQ7nB0qBwywIIO6jCqg7qC0LVoS7ZoOiYdCQ62h37lkkTf72mht17aoO0elp4beL6yttPra1XBJtmC4ExGpOtuFaLa2htokbbbGgAd6jaTawi/yyJuvW9DN0fbg62H9s6HXMOtttnfqJKD/+DeHcrW3jtjQ6Rg0Ftrv7Tb2vitIpaBK1ilulQF+W3hoddQVjiMdtCLfcOgitHRasO0xlrKSK84auNXjajc3+1odLRA2z4dyjbc+0ZlpCbQQ23SSQUokR08dpVzaCW5WNddaiR2FtpJHQ/2mAd0I64B3ogEZNWaG2jt/vAmuiC5tMjEG2nutYja9vUPDrVLdLm7gdE/aZNTAeMVzaZGd4dBI7/G1t9sZHZe21EtqQ6/h1JnhEDS+0aUdwI6aR0ijqH7TO2iEd1XaoR2U1uOHVR2hAdRlaUY0V0zi3NEaWmNWVrSvgrtmVwOimooNICB0R1PDvJHRcQctE3l9QB31FvIgAs20ZtK/bVG33VsAHetGomRJDx3R1sOsZbf922UdD5axh3LNsSbUcOmEdJeaUm1wdsybb0orTEZ/UN8C6YmQ7QF8b/tIbBUC1M/h7jZQk8ptkjaTO2alrM7VbUezEG5h9+BAdqeQMMO4eN+0a9m1j9tJHa5239tzVgiUjKxnLHfqUOZt1Y6JAB0jpxjUs28DtMBbj+0buunMXMgCmMDAM163bNs7HfWW3sd/ZbyB2OpuUradLFMdWJhRx2VjqabTjW7UdtY6px1kDufLfn2wVMh8AFx3lnEBVhE6i5tqIaFG1hBva7fc2u+s7xRegSOttNbY626FtBdrzW08AHGjD8221tYLbgW2AttYmLq2sFtDLaDW13jrNbZS2vJCn47kW0AXL5bZ+GjFtSzZcW1gTvZbSiEakQ+La9myEtq0kIBOsltora4J3itqpbQa2s0e1LbEW2ZyCZbY+kRVt4Lr4FAqtvQ7YCYDYsMqF0XWCtphbQK2mmAgE6RW0QtpAoAK27kt9zY6J38Nhlbca2hltSraXukgTor9Wq28CdqravrCETqtLDq2iid2raVRxmtrYndq290iBra1wQsdj/HS82lCdD477W3fjqEnfa2rVsGYBlJ0fNrzrLBQF1t8faDR261qNHSTGhLNGTarS1ViKppO2gZEdQJbU62sdsjLWKOgMdM7BY5xRYNMndSOxItMQ7M+1W+u+HVe2rod6ja4qL2TtVDZqOpydLTbCR16Nr1HTOOgvNVA6y20l5tedYvG84dnERArgqKmQ7R1m9AdTJbd21YDoPbc6m6KdVHJYp0EdvAHesO4odvo6KB1ClpZHYaOuMdJw7NAA+lukBuWiRooKaJzY1GMVXrErWwoNYUQTazJTtM7W5215cIgaxi4ponHLeh2witeQ6Ap0V9sW9YqO+Ctvw7au0/FohvIVQCqdHo6/mzhjsk7ZA2vqdT5b+x03tpoHRZG6Ot5w6inbs3GWkebG+Kd0gaiJ3ftoxHVqWladzxJlpFqhuIHaCOnKdbk6lR2QdtCnZR2mDtr/a6a0uptmkSe2xIAqA6nI1odqyzXsmqRt4o7/eCqknunQYlQ6d7PrCx1lZtN7ZuOhwdlA6Cp26TqKnSY2r0tK7a9y3FxlNrdaOlQqidZfp2dloMCIgWAIUNli/p3sdtSnRkOWckXohFg2GdleneuOx8t0Y6gZ3+jtCbZjOh3gtRgcZ1mdjxnV6musd9/bBy3kjuJHEOSSmMVsbRGwfZrzbfjOqMdfY6j+3bjrqLeTIB3gAsgKZ13ACpnTdmgmdnM7zy3zTuf7UU6wydFQaGUxOuTszXFOzdtslbt22YDq4HayW96d8ubb8CyzuKOD9O8fN2U7ve25TrurRFGkGdRja9J0MmsKdWcOrkdCwIh1QmTuoQJg2/ON+Zbm22PDusneo2kfFLwjW8DLjsjzYFm96tYI7uK2ztpLrR5OtZtloLXZ02ztIbXTmqadDI6Wc2zTqP7eLO8tt106260T6S5MLYkW2dcOb7Z1+5rvrVLmt6dNk7/eCcrATnUPwLttns7053X9oLbRHOwmdsw7iZ0ujpGmDnOiJt4nayG1rjsX7UXOl0ttM7i21wNtgHc3WsX15s76B0YMl8mHFEsydIbbmO1htq6nabm/dtTU7f22hDhuGt3OxydsxaC511zp9nUFOiDtg07MR1gWqJADCWmmNMo7aR06jpFjfrOkKdRs75O3U1oFDVLOlGNRbYHJBJ8n5HaI2/Mtwo6rJ2qzsznYFYyKkR87c23+TrlHeCOzedQna1+2ZtrloLIoqut27aa62sNqk7V8O5ztsDbTA2sjtbnagGzkdHc7oGA+72yOFGyR6dAFbf+1JTpVndzWlUdYC7vFh1pnkgGe2iwdyVbI50/Dvync3OwBdyTaxfVg5rjnWnwQK4XmyrR04VuDbXcOvud587E21Fjp4HW52lvgcjaJ50i1vlNevOrPtCo6MF3uTvnnSRWwhdmjaJsWrzpPHdPO3UdT87DI3bzqf7ZsWl51Snabp1pJUO5MXAKBdP/alZ1/9sdnZfO0JtB3ITwhHch5LQjO46des7Tp0DTqwXQAuwqdbI71M3iLrjnfSoFRK+iBZf7IdthzfU6lOdzTqqZ3oztVTcYu8yxEDg85245rFrVH2vRtxc7RZ3sLrLnQgu6LIJi7iNzjto9nc4u5hdzcaG52QjujndTWhrNpo7aaxbkmI9Xyam4dZC7e60ULrRHdbWnadZnb30wxLv8XfiOtedhc6Z52CLuyrUNOi3IzeB0l13zrxLdkugRdWi7Q63YLr0XUAu6iNdA6JF3rsiClPLG8xdtw6El3iNqSXVkuoedxY7aF2j8DrqI0u8TtmS7a53O1sfneUuv+tntacB2j1qTbDtGd2d/S6Bi09TvlHbPOuadsY79F1MmsCAKVOp6QIHjxAEnzqY7a0uq2tCi74F35LpqbUqAtf0hTaI83TLq9nXv2jedwy6Dh3+zoQXW2MdZdxy65PWnLucnY0Gspdf87mR2VLtBnUsu511kU6LZ12ZBlgBLYlzsJC64I3f9oZLXIu2Bduy6o237Lt+XUFKW8kqC7PB0Azur7cE24wNwi7qB0SztjnSg2+boZupHu1bxrJ9QrOhKdO7atp2NTs6XSPOk2QmK6PR2EdvvnR72/qd0hbzp3IrrCnUu2+LN+C6UG0Dyg8sdlMYnMgK6cV3vts2nS9OuBdEK6F52HhHGBkPKNld2s6923dVssHYDO0udhs73l3GzrBnSTGomAK7b69hmJPpZtiu3ONzS7BR2q+soXYpW50d3i6zI5DZpPhrwu3Wdvbahl2vLrynWSO7VdkehFV16rt8nZPOildri6K+2sLpLnWLOxZd1S7nnUvOvCAPCOoFUNJaYZ2uBuBXVu2hy1ys7wV3YDtSnUkqYysIKpYV0aLvGzQUOh1dni7JV26Lo+Xc6u/kN8q64y1fTvXbc16zldXWbom0gVq1XZCuqWkykrT21qLp1nWcuzRdxq6DZ1IrqlXTvOk4dCsAV23SXRIXvSIHud5C7tl0D1trnbYusDNWswa11hxqtXYwursdQS6ZXXzLolXY2OsZdeVA4MCJlNrXQwu1WtRpb6R2BTsEXTpO6VdSy7mTXfLtAXSFUx8A3GgQ2CVTr/LdVOpqstSA9O321pYbGmWdpdza7PQ3GlBEDXFM9qdO0b0XXDNoRLYMu7itM06o11nTo4XQA2guVR66V13jTrPXd6OiddvU6Ql36jrCXRWutFdAjbnxgPZnPStcOs2tqq6z51tLqZDS42p2dazbMPj0NPiLR2ujet8Xbzl0sLt7XZgu01dkK6/12YrqMgMUuwaNpS6Ll3Frq3nWWukRd1NbPy2RLp8mHnwYMdGMMvV2cWvXXY4WQRs27bXuBhevyDRfOvZdfK7AG0zzGOoORuoANnU6Ph1KNuvXR4u29dXi7UN12kh2oA5DDjd8LYB53UVofnVeuj9dwU60nVOrtwXeyOwxd6K7lihnAiSOBlO9ldKq74l1qrpatRqu4a04G7FF3lzo+kIKODUdXybHl3DWn87c8unDdfs67120LqU3Yj0h6do67d+0UNpyXZcu2TttK7Lp1xWoPACu2ry5vuQhI1VTsTTMM2WqdUpqMihheojLZmuiDd2q7ojxHdqVKJaOkV19JBJE0f4GLDTTOm3teS7mN18gT/0g6mGDdgSbYt0flni3bs2jcdCK7x+1XzvbrRvMJtMrhRCE2SpqscNluu4aBq64Y1sLrEzYVup7BatADzSHdgtTRVuuosOW6p22Jbv1HdzOwddNGVNxlgJpa3QGG5a6CW68t31jreXbGumddzq7KvXzrpunZLYLjaWwBZpCrrrpjVRu4exW676p2BxgDXSlO7pt0OJH13h/GfXaJurjd767cl2yDpkbYJu+bdu26RN0sNjE3YFG21dbfaeN3TjpjHRdOxdtJjaAABSP67Y62F2CLbHXJMtO6064JFbZutQMw0HbN1diJjADYgB3TyuwNdphaFh2d+uYaAEGp0I1zo2HVdoEf9QjuhzdEa6OZ1WDrGTTYOqYdTlYEd3sTuowluOpwdVQ6dx28oEsLTfwNF14ngWfbnru6nVVW03tlVaJB1+DuXNRvgE5gfqQJXBzzv43XIO/YNFfApq2i9FJ3RyocndIg7W7U07ox3XTuvysDO6bOyOLshHaF29Idfwlod3IFpJ3cVmsndlTYKd0jDuhregu2GtRQ6i10pdv8bozuhnd+w7ty2VDuzLSDC4nds/aoPXy7srQIru8TdlK7xh3o7taHZjuzXdou6YcQPbtc3TFm7q0wObnt0Kbvg7TVGV6MhTA6S3ehuAHPY2xGd266OtCGltFHXpunKtBO6/6Ae7sejF7uq2N5bZJp0DLtabVOOgXd1u6hd1OVgr9QQWomdKG62d2zWtDxLEQN8AVRZo91A9tfXabalAArG5+d3LVsF3YNW+ndNnYdd0FbuCHU8G7Pd/kZF9FsOpj3Vdu8ddRe6S91LVu8HerunYdDIa091czvx3XXuiPdJXhjg17eub3YXu3cgxe709yl7s73SjuvQtLVrU93V7v/nWsWqpdCiaXd0gLokXTtGYysP5zVVDe7pFNeySPFdw4zVQA0EAqbc2uoGtw6BN923Rnz3fw2K7dZm7ey0J7rL3Unuivdwu6q91JbuO3bwOsPdkJRiSTdRgv3aG20fdGfbTgAT7ronFPur3tM+6Ea2q+vn3eLu/vdnoaRXmNHO33Zfu7Htf+7rAAAHtR3YnuyYdye6e90L7tWbaHu/tNePIYD2qxj7nb/usvtOgakD1AHrV3SAe4mtYB7n91dbsgPUz6p8EX+6CdxN7oL3Qge9EAxB6O93AHsCrd3u/b1ve7zy0S7sh3eBQXoIuB6zm0tWoIPS32ySNLB6Y2goHu2HTbuzg9GB66Z1YHsk9RhkAQ9DB6r93I7rEPYl2rYdJ07yD1z7soPdJuoRd+G63y3O7pLzc9u6bdbdbeYz0+2owj9un3dHmLkQ1hRFZwMfulJdJBbeD3QMFMTVLGJQ98B7CD3x7pFnWjuvNNqB7H90p7u0PSzujPd8Bb392L0Gy2kB28KAjB73D2iHvb3eIe+/dPh67S0EthkPU3O8bdRMaDD08Nue3d62n5dbsZLC3Zxo3bT7u2wlbXqD91zvDWHffWyNt4O6+01QHpAQNkewgdK463D0iHp9Hawe0g97B6pD3gHuq7cluoI92B6k13pfOqPcIehftRB7oj1qHqt3XEe8v1/h7+x08Hvf3Q3+Ko9rh7Y929Hu+DaoezYdgx7JD1oHukPRAevXdknq6SSTHrgPdMe43tsqa5j3NDoWPRoejXdyx6qD2rHqZ9SBEDY9P+6Ij11HsQdbsesQd+x6u93NHpGPVHO2Td3+aXd21LrjneImYbUq2hrG1ZWt+mMmWdmwrRbT3KFUDMzenWjpdNC7l02S7oGlItaHC0OHi0+1JhoCjTfujQ9Ax7vD2LHt8PavYK0sAQ6X02HNtP3bqE3Bev0xcR0XmrCiKvYZHdg+bp91NHuT3Wie2C1GJ66t0a2vGPeZSXqgG0x8T0jWtjbMJqGY9izbPD3iruQ3f2uxw99/cLIjyqUZPdBa5k98J74N3DRtR3RyezE940baT0MimG1P+PbftZnYhT2TjvZPflu1ftwqbJT0fhCm1FqoCJ1LM75T3szqnXRKes8NdJ7l118BE1PYZ2bU91M6Rt2NzoQzUE61U9pvRDT2/iGNPXKe5HdNW6b11npqtPfqeqU9vNS7T0uJq1PY6ezrdOh6Ly3Wnt5PSZQfk9+5ZBT0+nvNPSsep1NAZ7htQ13FlPTtIMM9ip7Rt2yHsL9VGenagc+BYz1uqiYPSKe3U9yeaUz0NWjhYOmelk92x7hZ2inqVPZge5M9bp61T15no1PV6ek098Z6Sz2JntnHa6es+N7p75plGnprPQ6ezM9f0b6z0Wnoy7U2ekBNLZ7SVnBnqt7R2eyI99R7cN29nr7dbmeocY0LZP53qAFrPZ2ep09vG6XT2TnorPTaenM1aZ5rO3zntHPZGO7M9Jx7g41y+kTaRB8PEN/DYzd3fAGFPYNa/o98x7kT3MHsQAHMAd4oUAASh0EnuxbIkey09ch7+z3U9kPPVrO4Y9LDZWZ2mbvPPTcey3d156azW3nvvPY+epk9lx68d17nuNjQee8spkKBjz0/+G3PW3uyfdDR71D3AXrvPbMAMC9Ap7nz0Rntr3c2ej89sF6q519zvBAFggFQ9l569j1AXsGtSBejC9s+6nz3KHtCXc8e1I9L27DK37zrULGdioiiH/I0s0g0tCLAv6J+1hKQdmAzUUJXWCeuQtku6NNzbeocVsiGqFt81bC11dnpIPaheyi96F6Hz00Xsr3WYmqk92i7Aj1v7rr3VSCdi9PC68C1hepFXa32yhtTkYYj3T7pQAFRexS9oB6tD1mJq4PeKe6g9cbrRfy0pn/ABJevS9B262+0bZhQvXce+S9oF6lL2ftiOPX6em9tjF6wQ1elvbnRIurkauNJdrAORsL9IOWL2ET9rz8IfNlH5DYu+w91Vrxj33owtTKpuw6dNUAhZ0eHu7PS/u5Ud5Z6z40MMFSvfcuvysMDq053DWhcXY6a309kF7Iz39poC8IVe6H1GV6/p3Fnt3PdVeyT1xxA6r08loavVX68q932bwz3HHpavUz6nlY7V7Mp1LcEyvWye7K9fV6aT39psAaENevudJV7Rr1jns17SqeltdMp4lpLg8HqvWhAYbdCZ6ez0J9tjNeMe6BEuNIHrrrXtKvZTunc9zm6a919nuTTT8qbTEwIwjr2bXvGvX6evU9eGbSBAhbUUkLde3LdW16cL0XXqXrVde9FMNZaOr0bXvevfdeqq9k17EC31FvFoEVe4DtnV6+F1NXrOvcqe/q9l17nr2/CKVoG9ejrdvV6Hr05nuWvWFel7IKN7w12Lnvu3aMejG9T16Vr3AiKgrcBWO69zV6Qb00HsRvbUoTTdUHqyb2A3opvV9ei9N1N7++I43uq3ZVegm9S16ib2DAlMdGze6S9eN6xT3UnqZve+m6m9jRRSb0jXoZvbDess9P/q9r3TXoPNPQXdK9AN7EL0VXrRvcDe4W9hHrBr3y3ohvUQOqG9rJ6Fr3aTsevUz6tq9Wt6+b112oRPVmeqW9SZ6Zb36nqhYDNexW9x17Ra0KnqBvZze+G9S9bar0m3v+vQ7ekYA556Bb2lnqtvdqa2k9BV6Pb3DXt1vUWerK9jN6Vz1nxssUZuwbW9mSbQ71m3p9vRzevvdXN6QE2gTA3NAre4IN9N7lb09Xo+vRNe9W9WI6fG0x3tNvX+ep29Ed68r0gJvZ6One2O9c16Fz1J3u4PYTe989+NYi72e3rrPWXe629Z8a8vxV3uLvdN60u9lt7Gz2R3pATbbe4O9s16s71XHp7Hbne9G9Kd6aQ1ASC7vS3e2u9qt6Xb2U3twTUvO0m1z6Bu72O3p1PX3e1895d79z2BzGbvSHepW9Y96Vb0T3rVvQPey/1ZjgSYwzXRi3aPevW9p17xz07Xr3NbSex0NiW0r71EZpvvWHesa9bd6A736nuDmJfeoc9HKaJb3Z3tv3Sfexe9+d7hQ2Ffi/Nv/ep8sXt6zz293vvvf6e/U9z97IH18ZpgfebemS9W96Jz073tX9b/e9FMmsAUH2t3owfQ/epK9+p6L72/CJnPdfewB9R96c73O3uTva7e1ZNAqhPxBQPvfvQneuB9i166H3pxpwfYw+/B9896QH20PqXvcuGjCV4N7171MLs3vfA+w29l/rK72r3rSvZneyh9OjazT28PvrvVPe45NPjahH1z3q6vaw+g29Dd7z70VUCkfdXe5h9ZV6NH1Mjv9vbte/U9lijVH0H3pgfd1e4B9ND7HV2PbtvdQFehk1z27GV0CNo94GtGVvweTbWt3BNh1+C56mUcj46zxTdusSvcJe7k9tEgkwS/eCM3RkmwpIzTqZz0zLqp3ZYOiQ9Bx6dh1gBFVLL8RP/Qp972820ntNGJFGHyQFqaIZxLcABbHHu5Xdka6Ca1sHuqrYk+lJ9UT7Un2gPrfPRI+0pAjwAdK45PuSfYUkMfdTQ7bj0UXrJPaie8p9eT6Zz1pPvbvYPegyAkUYpzWznuwQXZWeaREY7Yh1UrpGXXAWkx9Z8bY0xpRnHAnM2slYPuBsEHNPo2HUY+/u9WD7FQ1pGAGfTeWi81wz6ln2jPvaXaKulXdS578Y3iPq7zdXAUUNUNqXE17PpO8MtImJ9Fu7nT2nPq0fQI+uponAydn0jWpufZLUXHNre6NB1rPu3vb0+y/1oNxLn2Nto+fYs+2593z7ux2/PomfZw2ux9UfqHH2yOq9LW9uixt54xyVh6/wzHQaMPtMTRYrHA5jsBMKsWIToQoUnR1hbo2fUAO9SqLI4QsBzNqBrLDEFZ9Hlq673Rrq5PeMe6aUTkQ5UwUvvE7PQXe59496bH02XqUfbmG8Y2xkRszQsvp9LL+ekpd8j7OX1C3rPveXW0l9ktwmuwCvpcxGy+uYtMN6xH3PPp5fZK+8kgQiAZX1UvrGfcfe0V9y57iX21et5fZGyDmk6r6vUTUvotvYq+7l9KMbj2DILtRnY02vPssr6hX2DzoVfWw+/h9r87LX2S3CBHYEm219Gr7Dn3h3sIfQg+z0NTwg1A3vmHHbZ6+419mr7qH1f3umfZt6gN9fL6UyqDNspfaG+719n97fX1nPpdfQc2EjRwb7433FsBNfeg+s197D69X0qvskCCeAI19Wb6w33WPojfY/es8Nj1Q1A2FvAhvSesVl99r6ax0ivvLfcQ+/19/3ZUX3WvqGfZm+uV9U87HX2aPvNfdkW119P0gNoxxvvrfdm+329DZ7/n3f3tbfYO+08I7KaQ30lvsTffrev59mD6AX1nRujfRqafDtnb7R32lvppfQvevh9YD7/C1pvqkqLW+khigr6x320vrFfbq+mItM77uMQZvu3fYu+u+9Tr6D30lpjTfdEqQQ9uz6u30Nvq7XaI+p994r7U31qBtd/sW+7t9F66fX25vudffQ2lF9Ki7Aw2dlqRyCtWL99Pz7w33JvqVfSS+sIGUH7KIBAfvg/ZC+xD9YH7n307VCshDA1YM9sH7Hx0fFh3faa+399V77lI2ofrhDCe++d9wH7hX29vuXfUQ+kG1DL79X0wtHCfR+++99BT6l33Qvt13Xm+ksOVH7Z30YfvPfXu+xR9fH7KP3bMCjDtIgIT9pH6c33kftXfcq+gT97MTpP0Pvo5fc2+5j9lb7WP0BzAzvR6+z99wn6FH2Ynv8vZHWpCVxG6aC7Ex2cjK5cByN7UVkyxqsDa9btEPbNzjbSj0pToZfbB6Y9udxa0iBPNkdPfx2+Jt9962j2Rvr7DQrmhHGbn7Mk0DoE8/T/Onxt8D7DP3A5oAAMoAAHVEx12JvHqNY4utta67qRI6dqjsPaOmKRTob7liEvpD3RR+2vsNVhz4ZB5G2de/8m7Een7tX3Urqs3S2+kBNfhoP+1FfvyLSV+yKgZX6p12RfpLzf2AAgAiAABgDimvFNZ4ACAA5hZQqidWmoAAAAUWcfe9ugIUbZM1s3KrsaLMtWYZsgRZ6Q12MHlLN3wO1se672Y0tfp4bW1+jr9XX6ev19fqotaeAOsApU7Q6zsPEBEmpusNsP/YX+zzLhC9YaUd5sbVBbjyAQBy/RiG1b9JjbYv3BXvePV0SKRd2xhNO3GljyDS72owAvKQoKBvOghfRnO8D90Iax7RufAtYuym6SQKbrbO3yvtA/ZZu1ndU76QE3oyFlcGD+4r9jO7Gv0yfvHfdte6ddKR6wllCAAcAO4ANYA7gAOTUmAAIACYAYa0dFqSf2iADAALFauYAJgBegAbkDXAAQAXsAxo4WAAXAEqAHc2rcAHABrABiJu3AKcARrwYRZ6ABhFmeAF2OzAA4QBMAAbQDeQHRajrtpTrUAA7gFurMsumoA/0kQbWVepqAFz2bB41RaagAGgKV/S96g4t1VqOR01AB/hrr+4Kk5tKlf3MXq9bLw2+DeOJwTf3pNpEnbw28EquacTf0vepT9br+nwtCvYTf0JRs3tSb+4KkWVZll3wbyrnUr+8yAKv7cWzLLpe9WXWZZdCUbUxDwlCZNYbWqnwkf7qO36/uTTEr+motM0YKazYPBN/fr+2P9CUasShMmqWkP9IWP9GBQ4qzLLolLQmgWP9bq7v1gl/tw9dsAEv9S0h8W1R/tw9W95RP96TamQCx/sNjYJayIA8JQlf0lTvY8LH+ojdZGFu/3h/rAgGsCCEoUf6JS27ro7/Rb+lP9zZJqi24eoT/eCG+Det372/2mNpqACFKBf94vrgqR3UEH/R3+tf99cgV/2oVseANv+1P91RaJS1PAA3/dUW+DeG1oD/3MmpD/fAwFf9Jo64iDtEBv/eH+zSdB/7CnU1AHGLCDa/J14JVmmwg5ur/QSUZ/96TbYPEL/o0za/+6/9z/6PN3LmhP/WbOhX9IAHJ/2FOtw9VeQQADfDbMIAQAd5zTNGY+soAHMmF2dgX/YtmmaMfxQF/00Wo1/Sf+iGdo07CAPW/on/UP+lINGv62/0H/tNDRr++AD1AGEo3PwEIA8FSff9k/7FO36/rQA6wB039HAHyANgAf5uIQBgSAKv6TywL/sRfSr+hWAJ/6l/Uq/vv/Qf+2L98G9bICR/qe/aIBugDk/6F42v/qz/aZ64KkhvEQbVl5pqAOs2UvNpv6lAND/oTHfr+xysIAA0m1L/t//ZP+9I9ggGDAMg2te3YIB7gDtgHMmHg4BP/UYewQDFgGh/3PbrX/W9oBf9z27mL2sQAbTLUANr95gBLACziBIeOeQNlwoYBVQBrWiCAArAD5swLZqQDhJDPPR82IIAzFrjvLXmjM/eOIBXWpKhLpxQ4hJpHqmKh4TJDKqCZol61HpMcVN55AJvUFVoGQGWmOtMQ5JvvgkgGkYOxa2F1oABNM17mrAgAMACHdjJr4ACZIBCAPAAG9AMGB6zX6jmqACSAMy1INqfQDtAYuAJ0BlkI/AB4ADvKN3AAMBucAvNqyY17mqi/VF+oFYFwAov27gAAAILwADvAA5gIEAMX7DUBAgDvAFF+4QQQIB8nVUWt5tSlQPc1AABJAAAcpsBnHYFwAnnUrAYAAPIvOoZAM8AeAALXA0AAhADwAHgAeAALzrV7B/Ad5tcfAPc1YwGOgNdAatoDMB0IQcwHaf0LAZJAP6iVoDh3B+wAXAHydZCByLA0IHSaXzAaGA0IAFzRYIGaADjAaEAJMBqEDswHsQO82teQEiBkIARAAIQPdAd6A9zYWEDgwHebUebtaA4SB6iN6IHpgOkgbhAziBlgA90AWQM0gZCwHSBgSADIH4QNCAHQDXyBiYD7IHMQMuGDJA8MBvED1VqKzDmAH5A+BAQUD/QGuQNMgaicHua2yKMgB+wCmevFNesByr1/AAov1x1hedROABWALzqXnW7gEWA0sB6q1u4BGTVoBqvkE86hkANoRBv3rAZeA46BwCAezZFgNXAeqtW0BpUDPQG+gPCge5AyAACX1e5rbQP2gfMgI6BlRsLoGhABRfrdA8Q2WgAnoGSQBISvFA0SByUDnIHGQMkgGWTXuawb9toGCmhPAdeA+8BmQA8ABaABoAFoAH8BgEDQIH7m2ZgZGAyAAagArIGmTVpgZhAzKBoQA1oBYzXggYlA1MBqUDgYHLgPegZBtWBAFEDQgA0QOdgfTAyKBlgAJU7QwMPmuJ/bMAUz1zxQwAAAgb6ABcAXcAk4GQrUzgYWAMWB8sDLzq+gDwAAAAGoEAGEAJcBxED1VroICKgY7AySBpsDaoHMwPG6j3NU86gAAGp1aSds+TqAADiC/r8nVPAbvA5O2S4DcoGQbVNlAHA+pmxsDWIGLwNCACCQLGam+IRABTPUXAAnAGgG0IQhTqzgPaQDOAyCBmsDLfZfwMg5v/A9KBwCDLAAfCApgbZA8OB88DGYGgIO9gZAAEyAZCDQ4GzwMAQbwgxhB0EDNoHlwPTgdnA/OBw61S4GXTVTgagAKuBucDZYH/gObgYgADuBvcDIIHDwN9gfrA8SBjEDI4GgwMIDqwgw2BnCDZEHRwMgAAsgCBB/iDqEHuwMIgZaAz6BpkAJ4HUwO0gYDA82BlgAEIa9zVUWqi/aEofgAsVqAADU+YHYwOFgeLA6WBjcDlYHebWXgFjNcUwakDp4HBIO4Qckg7AgWM1DEGnAArgdogxxBxcD1EHmIO0QbYg3RBriD+4GEQNXgaPA7+AFSD2EHSINoQfIgyAARm8okGBIMcgccg0GB8X9sUG5IMaQeigxSBn0DskHxIORQckg5hAWM17QRiIMpQfQgyAAXAMrQH8oAFQayg/JBoQAeIZkoMVQdSgxogGyDz8B+IMvOvgAIN+64DmwG46x7QB8LNQAeAAAABpMAAeP6gQBUWrog3oINAA0ohywOmepmABAAKL9zxQIAA9mpJAEpgWM1jJqov00WpcNik2vH1S0GVoNf8DWg7za7mAbYGCQM0gYig5VBlgA/wQ9zWL4HKg4dB1KDYeAZIMHQYcgxJBoMDZ4BYzWvOt0gzrYJ4DLzrnoMwIF5tW6AFyD3kGWIN0Qa8g4xB9yDa4G/IMcQYCg59B3iDIAB2wOqQYug0VBmEGNUHoYNRQYoANdB+yD8UG7oOfQY1A9Va0KQ/EHNgPNQf4APk6kIArzrBv2hSC2AxOATvN2dg9zUbQdVldQAbaDRIHloOUwe2gySAJkAe0G6wM3QZRg9lBoMDcgA8oNkAFkg46XYsDSPQjoOEQfBg0/A3UDFwAXgPfAFXAPkAIEAz26XgPWgCBAJ1aBkA24GEwPUACBAE86pWDd4ArLVgIDygwhQc6Dt0G2YO82r/ACBB/IA2sHWYP8wb2/XDBnWD/MHtgBMwcyg/DBySDSQAkYNQwfNg6lBimABsGjYNdgadg+DB5mDyMG3YNFQdqgPbB8KDjsGfYNfgYhg/tBr2DQkGmQOgQD9g2JBm2DQYGE0BWwZZg97BqKDRsADYP5AG5g1qoXmDXcLUoNc4Ejg3FBhODkkGUcCcwdTg2BAXmDT8DM4OQwDjg6HBhKD4cH0oPv/qedbM2HwstABHwNOPtRA7XBzJA9cHG4P+omGA96Wvc1vABC4P5AGLg7rBzuDNYHGTXvFCIAF0B6gAaAAsIAXAFYsECsfKATIHeQO6/pHg2PBieDCVqXnXEAFM9WAAPoAmpqZgMTwbIAACBqkA5YHtwOamuJ/ZUAdPcncHKINK/sXg6BACeDlbbV4NgQY3g7NBjwA28GMQOurtjAAfBo+DBo46JydwfBg8PBogAo8Gr4PgQAuALfB9eDm8HH4PjweVAy/B8YAb8GvAAfwbng8FBkG1sVqov2dWngAJ0B/J1JZqwADmAHcAIZYeAACCHOrSO0AuADgh5BD8ABUEOVAHQQ5ghtcDj4HGTVPOuwQ4gh6ReQIAxABAgG2A4eAZqDTzqUADmAF3AE4AeAAM4H9RzimveKO4AT+DooGGs17mpedc9usIskWBNgPgQd89Z4Afk1z27hADzgE4QygAbhDvCHT4MCIfRgyDawb9UX63nX8ACBAKsB/YD+TqXgMvAd3AAyAC4A6iHNEPaIYTAzF+vRDBiGjEPDAcrXY/eneanwG8AAoAFmg9HWzq09iGmQNwjr3NZjBjoDzUHBv0LAEqAPAAavAaAAtZDuIetAyDax8DjoGnnWMmqdoHLB0z1OvwjgPUAFuA+sBmL9yCGov13UFoAJsBx8DpoHMIDIIfydVF+9xD4MHwkPKwaiQ4EAGJDcSGHwCJIZjA8khpaDaSGMkNZIb7g4ya3JD8ZrtRxTgA2RfL+hag3f7BAOx/vBKpr+8ENNQAdf1K/syYQb+pX9Rv69yy8NqP/cWmc39NQBLf28Nut/QX+wc1dv7CHi8Nsd/Yshwc1GAGCiy8Nvd/eshwc1Xv6JkPi+t9/aMh8X14JUucAl/pD/QchuVdDmRu/0vesnubr+zoA8f6ukNLSDwfSv+339Gf6dAOx/pz/S2WXhtOf6S/1F/twwv7+9JtY1Zll0V/pn/eL66v9zhZa/1L/q2QwZOpv9av7GTUt/sKjVQByf9lXrP/0rIZ7/SjgPv9ggHcAMX/uWTYJarZD7zq6n0n/uZNdP+5v9c/6WAND/sHNXX+0lDm/6Vf2Uoaj/UtID4sN/6j/2YocRQ5W67jQBKG4/USAGgA2Sh2/9TRQH/2B/psAyDm+Deb/6Qc2f/omQ/k6n/9EAH//1kAff/cxexHMCAH4N7ymAQA43+zlD0qG4APIAbt/Uyhof9oOadAMOAYFQxgBmlD2AGeAAaoZBtfgBj5s/AGFf38oditaQBwgDL3rVgTUAcyYU+QYQDDAGjUMgAHita/+wgDS0gVFTCAa4A/wB2QDokBxAOyAakA8oBhgDagGNANqAYeQ2oB/QDJ/6jAN8MEj/WYBgk4AQHv82tIdX/aIBnVDQV7BAOBoZ4A0chsQDC/6ZAOiAcWQwoBtlw/KGrAMpnhcA0chrnsPgGnAPq1h8A/3+9wDtgGvANSoZAAL4Bov9c3AA6wXAl4Q/AAAn9+4GTRzajna/Xc2+AAa4AY7VGjg+KOiANcAhqAwQAPQCAAAA"))
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* Utility functions */
|
|
|
|
var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
|
|
pcbdata.metadata.revision + '__#';
|
|
var storage;
|
|
|
|
function initStorage(key) {
|
|
try {
|
|
window.localStorage.getItem("blank");
|
|
storage = window.localStorage;
|
|
} catch (e) {
|
|
// localStorage not available
|
|
}
|
|
if (!storage) {
|
|
try {
|
|
window.sessionStorage.getItem("blank");
|
|
storage = window.sessionStorage;
|
|
} catch (e) {
|
|
// sessionStorage also not available
|
|
}
|
|
}
|
|
}
|
|
|
|
function readStorage(key) {
|
|
if (storage) {
|
|
return storage.getItem(storagePrefix + key);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function writeStorage(key, value) {
|
|
if (storage) {
|
|
storage.setItem(storagePrefix + key, value);
|
|
}
|
|
}
|
|
|
|
function fancyDblClickHandler(el, onsingle, ondouble) {
|
|
return function() {
|
|
if (el.getAttribute("data-dblclick") == null) {
|
|
el.setAttribute("data-dblclick", 1);
|
|
setTimeout(function() {
|
|
if (el.getAttribute("data-dblclick") == 1) {
|
|
onsingle();
|
|
}
|
|
el.removeAttribute("data-dblclick");
|
|
}, 200);
|
|
} else {
|
|
el.removeAttribute("data-dblclick");
|
|
ondouble();
|
|
}
|
|
}
|
|
}
|
|
|
|
function smoothScrollToRow(rowid) {
|
|
document.getElementById(rowid).scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "center",
|
|
inline: "nearest"
|
|
});
|
|
}
|
|
|
|
function focusInputField(input) {
|
|
input.scrollIntoView(false);
|
|
input.focus();
|
|
input.select();
|
|
}
|
|
|
|
function saveBomTable(output) {
|
|
var text = '';
|
|
for (var node of bomhead.childNodes[0].childNodes) {
|
|
if (node.firstChild) {
|
|
text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue);
|
|
}
|
|
if (node != bomhead.childNodes[0].lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
for (var row of bombody.childNodes) {
|
|
for (var cell of row.childNodes) {
|
|
let val = '';
|
|
for (var node of cell.childNodes) {
|
|
if (node.nodeName == "INPUT") {
|
|
if (node.checked) {
|
|
val += '✓';
|
|
}
|
|
} else if ((node.nodeName == "MARK") || (node.nodeName == "A")) {
|
|
val += node.firstChild.nodeValue;
|
|
} else {
|
|
val += node.nodeValue;
|
|
}
|
|
}
|
|
if (output == 'csv') {
|
|
val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
|
|
if (isNumeric(val)) {
|
|
val = +val; // use number
|
|
} else {
|
|
val = `"${val}"`; // enclosed within double-quote
|
|
}
|
|
}
|
|
text += val;
|
|
if (cell != row.lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
}
|
|
|
|
if (output != 'clipboard') {
|
|
// To file: csv or txt
|
|
var blob = new Blob([text], {
|
|
type: `text/${output}`
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.${output}`, blob);
|
|
} else {
|
|
// To clipboard
|
|
var textArea = document.createElement("textarea");
|
|
textArea.classList.add('clipboard-temp');
|
|
textArea.value = text;
|
|
|
|
document.body.appendChild(textArea);
|
|
textArea.focus();
|
|
textArea.select();
|
|
|
|
try {
|
|
if (document.execCommand('copy')) {
|
|
console.log('Bom copied to clipboard.');
|
|
}
|
|
} catch (err) {
|
|
console.log('Can not copy to clipboard.');
|
|
}
|
|
|
|
document.body.removeChild(textArea);
|
|
}
|
|
}
|
|
|
|
function isNumeric(str) {
|
|
/* https://stackoverflow.com/a/175787 */
|
|
return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
|
|
}
|
|
|
|
function removeGutterNode(node) {
|
|
for (var i = 0; i < node.childNodes.length; i++) {
|
|
if (node.childNodes[i].classList &&
|
|
node.childNodes[i].classList.contains("gutter")) {
|
|
node.removeChild(node.childNodes[i]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function cleanGutters() {
|
|
removeGutterNode(document.getElementById("bot"));
|
|
removeGutterNode(document.getElementById("canvasdiv"));
|
|
}
|
|
|
|
var units = {
|
|
prefixes: {
|
|
giga: ["G", "g", "giga", "Giga", "GIGA"],
|
|
mega: ["M", "mega", "Mega", "MEGA"],
|
|
kilo: ["K", "k", "kilo", "Kilo", "KILO"],
|
|
milli: ["m", "milli", "Milli", "MILLI"],
|
|
micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
|
|
nano: ["N", "n", "nano", "Nano", "NANO"],
|
|
pico: ["P", "p", "pico", "Pico", "PICO"],
|
|
},
|
|
unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
|
|
unitsLong: [
|
|
"OHM", "Ohm", "ohm", "ohms",
|
|
"FARAD", "Farad", "farad",
|
|
"HENRY", "Henry", "henry"
|
|
],
|
|
getMultiplier: function(s) {
|
|
if (this.prefixes.giga.includes(s)) return 1e9;
|
|
if (this.prefixes.mega.includes(s)) return 1e6;
|
|
if (this.prefixes.kilo.includes(s)) return 1e3;
|
|
if (this.prefixes.milli.includes(s)) return 1e-3;
|
|
if (this.prefixes.micro.includes(s)) return 1e-6;
|
|
if (this.prefixes.nano.includes(s)) return 1e-9;
|
|
if (this.prefixes.pico.includes(s)) return 1e-12;
|
|
return 1;
|
|
},
|
|
valueRegex: null,
|
|
}
|
|
|
|
function initUtils() {
|
|
var allPrefixes = units.prefixes.giga
|
|
.concat(units.prefixes.mega)
|
|
.concat(units.prefixes.kilo)
|
|
.concat(units.prefixes.milli)
|
|
.concat(units.prefixes.micro)
|
|
.concat(units.prefixes.nano)
|
|
.concat(units.prefixes.pico);
|
|
var allUnits = units.unitsShort.concat(units.unitsLong);
|
|
units.valueRegex = new RegExp("^([0-9\.]+)" +
|
|
"\\s*(" + allPrefixes.join("|") + ")?" +
|
|
"(" + allUnits.join("|") + ")?" +
|
|
"(\\b.*)?$", "");
|
|
units.valueAltRegex = new RegExp("^([0-9]*)" +
|
|
"(" + units.unitsShort.join("|") + ")?" +
|
|
"([GgMmKkUuNnPp])?" +
|
|
"([0-9]*)" +
|
|
"(\\b.*)?$", "");
|
|
if (config.fields.includes("Value")) {
|
|
var index = config.fields.indexOf("Value");
|
|
pcbdata.bom["parsedValues"] = {};
|
|
for (var id in pcbdata.bom.fields) {
|
|
pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
|
|
}
|
|
}
|
|
}
|
|
|
|
function parseValue(val, ref) {
|
|
var inferUnit = (unit, ref) => {
|
|
if (unit) {
|
|
unit = unit.toLowerCase();
|
|
if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
|
|
unit = 'r';
|
|
}
|
|
unit = unit[0];
|
|
} else {
|
|
ref = /^([a-z]+)\d+$/i.exec(ref);
|
|
if (ref) {
|
|
ref = ref[1].toLowerCase();
|
|
if (ref == "c") unit = 'f';
|
|
else if (ref == "l") unit = 'h';
|
|
else if (ref == "r" || ref == "rv") unit = 'r';
|
|
else unit = null;
|
|
}
|
|
}
|
|
return unit;
|
|
};
|
|
val = val.replace(/,/g, "");
|
|
var match = units.valueRegex.exec(val);
|
|
var unit;
|
|
if (match) {
|
|
val = parseFloat(match[1]);
|
|
if (match[2]) {
|
|
val = val * units.getMultiplier(match[2]);
|
|
}
|
|
unit = inferUnit(match[3], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[4],
|
|
}
|
|
}
|
|
match = units.valueAltRegex.exec(val);
|
|
if (match && (match[1] || match[4])) {
|
|
val = parseFloat(match[1] + "." + match[4]);
|
|
if (match[3]) {
|
|
val = val * units.getMultiplier(match[3]);
|
|
}
|
|
unit = inferUnit(match[2], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[5],
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function valueCompare(a, b, stra, strb) {
|
|
if (a === null && b === null) {
|
|
// Failed to parse both values, compare them as strings.
|
|
if (stra != strb) return stra > strb ? 1 : -1;
|
|
else return 0;
|
|
} else if (a === null) {
|
|
return 1;
|
|
} else if (b === null) {
|
|
return -1;
|
|
} else {
|
|
if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
|
|
else if (a.val != b.val) return a.val > b.val ? 1 : -1;
|
|
else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
|
|
function validateSaveImgDimension(element) {
|
|
var valid = false;
|
|
var intValue = 0;
|
|
if (/^[1-9]\d*$/.test(element.value)) {
|
|
intValue = parseInt(element.value);
|
|
if (intValue <= 16000) {
|
|
valid = true;
|
|
}
|
|
}
|
|
if (valid) {
|
|
element.classList.remove("invalid");
|
|
} else {
|
|
element.classList.add("invalid");
|
|
}
|
|
return intValue;
|
|
}
|
|
|
|
function saveImage(layer) {
|
|
var width = validateSaveImgDimension(document.getElementById("render-save-width"));
|
|
var height = validateSaveImgDimension(document.getElementById("render-save-height"));
|
|
var bgcolor = null;
|
|
if (!document.getElementById("render-save-transparent").checked) {
|
|
var style = getComputedStyle(topmostdiv);
|
|
bgcolor = style.getPropertyValue("background-color");
|
|
}
|
|
if (!width || !height) return;
|
|
|
|
// Prepare image
|
|
var canvas = document.createElement("canvas");
|
|
var layerdict = {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
bg: canvas,
|
|
fab: canvas,
|
|
silk: canvas,
|
|
highlight: canvas,
|
|
layer: layer,
|
|
}
|
|
// Do the rendering
|
|
recalcLayerScale(layerdict, width, height);
|
|
prepareLayer(layerdict);
|
|
clearCanvas(canvas, bgcolor);
|
|
drawBackground(layerdict, false);
|
|
drawHighlightsOnLayer(layerdict, false);
|
|
|
|
// Save image
|
|
var imgdata = canvas.toDataURL("image/png");
|
|
|
|
var filename = pcbdata.metadata.title;
|
|
if (pcbdata.metadata.revision) {
|
|
filename += `.${pcbdata.metadata.revision}`;
|
|
}
|
|
filename += `.${layer}.png`;
|
|
saveFile(filename, dataURLtoBlob(imgdata));
|
|
}
|
|
|
|
function saveSettings() {
|
|
var data = {
|
|
type: "InteractiveHtmlBom settings",
|
|
version: 1,
|
|
pcbmetadata: pcbdata.metadata,
|
|
settings: settings,
|
|
}
|
|
var blob = new Blob([JSON.stringify(data, null, 4)], {
|
|
type: "application/json"
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
|
|
}
|
|
|
|
function loadSettings() {
|
|
var input = document.createElement("input");
|
|
input.type = "file";
|
|
input.accept = ".settings.json";
|
|
input.onchange = function(e) {
|
|
var file = e.target.files[0];
|
|
var reader = new FileReader();
|
|
reader.onload = readerEvent => {
|
|
var content = readerEvent.target.result;
|
|
var newSettings;
|
|
try {
|
|
newSettings = JSON.parse(content);
|
|
} catch (e) {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
if (newSettings.type != "InteractiveHtmlBom settings") {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
|
|
if (metadataMatches) {
|
|
for (var k in pcbdata.metadata) {
|
|
if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
|
|
metadataMatches = false;
|
|
}
|
|
}
|
|
}
|
|
if (!metadataMatches) {
|
|
var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
|
|
var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
|
|
if (!confirm(
|
|
`Settins file metadata does not match current metadata.\n\n` +
|
|
`Page metadata:\n${currentMetadata}\n\n` +
|
|
`Settings file metadata:\n${fileMetadata}\n\n` +
|
|
`Press OK if you would like to import settings anyway.`)) {
|
|
return;
|
|
}
|
|
}
|
|
overwriteSettings(newSettings.settings);
|
|
}
|
|
reader.readAsText(file, 'UTF-8');
|
|
}
|
|
input.click();
|
|
}
|
|
|
|
function overwriteSettings(newSettings) {
|
|
initDone = false;
|
|
Object.assign(settings, newSettings);
|
|
writeStorage("bomlayout", settings.bomlayout);
|
|
writeStorage("bommode", settings.bommode);
|
|
writeStorage("canvaslayout", settings.canvaslayout);
|
|
writeStorage("bomCheckboxes", settings.checkboxes.join(","));
|
|
document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
|
|
for (var checkbox of settings.checkboxes) {
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
}
|
|
writeStorage("markWhenChecked", settings.markWhenChecked);
|
|
padsVisible(settings.renderPads);
|
|
document.getElementById("padsCheckbox").checked = settings.renderPads;
|
|
fabricationVisible(settings.renderFabrication);
|
|
document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
|
|
silkscreenVisible(settings.renderSilkscreen);
|
|
document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
|
|
referencesVisible(settings.renderReferences);
|
|
document.getElementById("referencesCheckbox").checked = settings.renderReferences;
|
|
valuesVisible(settings.renderValues);
|
|
document.getElementById("valuesCheckbox").checked = settings.renderValues;
|
|
tracksVisible(settings.renderTracks);
|
|
document.getElementById("tracksCheckbox").checked = settings.renderTracks;
|
|
zonesVisible(settings.renderZones);
|
|
document.getElementById("zonesCheckbox").checked = settings.renderZones;
|
|
dnpOutline(settings.renderDnpOutline);
|
|
document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
|
|
setRedrawOnDrag(settings.redrawOnDrag);
|
|
document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
|
|
setDarkMode(settings.darkMode);
|
|
document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
|
|
setHighlightPin1(settings.highlightpin1);
|
|
document.getElementById("highlightpin1Checkbox").checked = settings.highlightpin1;
|
|
writeStorage("boardRotation", settings.boardRotation);
|
|
document.getElementById("boardRotation").value = settings.boardRotation / 5;
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
setOffsetBackRotation(settings.offsetBackRotation);
|
|
document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation;
|
|
initDone = true;
|
|
prepCheckboxes();
|
|
changeBomLayout(settings.bomlayout);
|
|
}
|
|
|
|
function saveFile(filename, blob) {
|
|
var link = document.createElement("a");
|
|
var objurl = URL.createObjectURL(blob);
|
|
link.download = filename;
|
|
link.href = objurl;
|
|
link.click();
|
|
}
|
|
|
|
function dataURLtoBlob(dataurl) {
|
|
var arr = dataurl.split(','),
|
|
mime = arr[0].match(/:(.*?);/)[1],
|
|
bstr = atob(arr[1]),
|
|
n = bstr.length,
|
|
u8arr = new Uint8Array(n);
|
|
while (n--) {
|
|
u8arr[n] = bstr.charCodeAt(n);
|
|
}
|
|
return new Blob([u8arr], {
|
|
type: mime
|
|
});
|
|
}
|
|
|
|
var settings = {
|
|
canvaslayout: "default",
|
|
bomlayout: "default",
|
|
bommode: "grouped",
|
|
checkboxes: [],
|
|
checkboxStoredRefs: {},
|
|
darkMode: false,
|
|
highlightpin1: false,
|
|
redrawOnDrag: true,
|
|
boardRotation: 0,
|
|
offsetBackRotation: false,
|
|
renderPads: true,
|
|
renderReferences: true,
|
|
renderValues: true,
|
|
renderSilkscreen: true,
|
|
renderFabrication: true,
|
|
renderDnpOutline: false,
|
|
renderTracks: true,
|
|
renderZones: true,
|
|
columnOrder: [],
|
|
hiddenColumns: []
|
|
}
|
|
|
|
function initDefaults() {
|
|
settings.bomlayout = readStorage("bomlayout");
|
|
if (settings.bomlayout === null) {
|
|
settings.bomlayout = config.bom_view;
|
|
}
|
|
if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
|
|
settings.bomlayout = config.bom_view;
|
|
}
|
|
settings.bommode = readStorage("bommode");
|
|
if (settings.bommode === null) {
|
|
settings.bommode = "grouped";
|
|
}
|
|
if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
|
|
settings.bommode = "grouped";
|
|
}
|
|
settings.canvaslayout = readStorage("canvaslayout");
|
|
if (settings.canvaslayout === null) {
|
|
settings.canvaslayout = config.layer_view;
|
|
}
|
|
var bomCheckboxes = readStorage("bomCheckboxes");
|
|
if (bomCheckboxes === null) {
|
|
bomCheckboxes = config.checkboxes;
|
|
}
|
|
settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
|
|
document.getElementById("bomCheckboxes").value = bomCheckboxes;
|
|
|
|
settings.markWhenChecked = readStorage("markWhenChecked") || "";
|
|
populateMarkWhenCheckedOptions();
|
|
|
|
function initBooleanSetting(storageString, def, elementId, func) {
|
|
var b = readStorage(storageString);
|
|
if (b === null) {
|
|
b = def;
|
|
} else {
|
|
b = (b == "true");
|
|
}
|
|
document.getElementById(elementId).checked = b;
|
|
func(b);
|
|
}
|
|
|
|
initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
|
|
initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
|
|
initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
|
|
initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
|
|
initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
|
|
if ("tracks" in pcbdata) {
|
|
initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
|
|
initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
|
|
} else {
|
|
document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
|
|
tracksVisible(false);
|
|
zonesVisible(false);
|
|
}
|
|
initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
|
|
initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
|
|
initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
|
|
initBooleanSetting("highlightpin1", config.highlight_pin1, "highlightpin1Checkbox", setHighlightPin1);
|
|
|
|
var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
|
|
var hcols = JSON.parse(readStorage("hiddenColumns"));
|
|
if (hcols === null) {
|
|
hcols = [];
|
|
}
|
|
settings.hiddenColumns = hcols.filter(e => fields.includes(e));
|
|
|
|
var cord = JSON.parse(readStorage("columnOrder"));
|
|
if (cord === null) {
|
|
cord = fields;
|
|
} else {
|
|
cord = cord.filter(e => fields.includes(e));
|
|
if (cord.length != fields.length)
|
|
cord = fields;
|
|
}
|
|
settings.columnOrder = cord;
|
|
|
|
settings.boardRotation = readStorage("boardRotation");
|
|
if (settings.boardRotation === null) {
|
|
settings.boardRotation = config.board_rotation * 5;
|
|
} else {
|
|
settings.boardRotation = parseInt(settings.boardRotation);
|
|
}
|
|
document.getElementById("boardRotation").value = settings.boardRotation / 5;
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation);
|
|
}
|
|
|
|
// Helper classes for user js callbacks.
|
|
|
|
const IBOM_EVENT_TYPES = {
|
|
ALL: "all",
|
|
HIGHLIGHT_EVENT: "highlightEvent",
|
|
CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
|
|
BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
|
|
}
|
|
|
|
const EventHandler = {
|
|
callbacks: {},
|
|
init: function() {
|
|
for (eventType of Object.values(IBOM_EVENT_TYPES))
|
|
this.callbacks[eventType] = [];
|
|
},
|
|
registerCallback: function(eventType, callback) {
|
|
this.callbacks[eventType].push(callback);
|
|
},
|
|
emitEvent: function(eventType, eventArgs) {
|
|
event = {
|
|
eventType: eventType,
|
|
args: eventArgs,
|
|
}
|
|
var callback;
|
|
for (callback of this.callbacks[eventType])
|
|
callback(event);
|
|
for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
|
|
callback(event);
|
|
}
|
|
}
|
|
EventHandler.init();
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* PCB rendering code */
|
|
|
|
var emptyContext2d = document.createElement("canvas").getContext("2d");
|
|
|
|
function deg2rad(deg) {
|
|
return deg * Math.PI / 180;
|
|
}
|
|
|
|
function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
|
|
var point = [
|
|
linepoint[0] * text.width + offsetx,
|
|
linepoint[1] * text.height + offsety
|
|
];
|
|
// This approximates pcbnew behavior with how text tilts depending on horizontal justification
|
|
point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
|
|
return point;
|
|
}
|
|
|
|
function drawText(ctx, text, color) {
|
|
if ("ref" in text && !settings.renderReferences) return;
|
|
if ("val" in text && !settings.renderValues) return;
|
|
ctx.save();
|
|
ctx.fillStyle = color;
|
|
ctx.strokeStyle = color;
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
ctx.lineWidth = text.thickness;
|
|
if ("svgpath" in text) {
|
|
ctx.stroke(new Path2D(text.svgpath));
|
|
ctx.restore();
|
|
return;
|
|
}
|
|
if ("polygons" in text) {
|
|
ctx.fill(getPolygonsPath(text));
|
|
ctx.restore();
|
|
return;
|
|
}
|
|
ctx.translate(...text.pos);
|
|
ctx.translate(text.thickness * 0.5, 0);
|
|
var angle = -text.angle;
|
|
if (text.attr.includes("mirrored")) {
|
|
ctx.scale(-1, 1);
|
|
angle = -angle;
|
|
}
|
|
var tilt = 0;
|
|
if (text.attr.includes("italic")) {
|
|
tilt = 0.125;
|
|
}
|
|
var interline = text.height * 1.5 + text.thickness;
|
|
var txt = text.text.split("\n");
|
|
// KiCad ignores last empty line.
|
|
if (txt[txt.length - 1] == '') txt.pop();
|
|
ctx.rotate(deg2rad(angle));
|
|
var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
|
|
offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
|
|
for (var i in txt) {
|
|
var lineWidth = text.thickness + interline / 2 * tilt;
|
|
for (var j = 0; j < txt[i].length; j++) {
|
|
if (txt[i][j] == '\t') {
|
|
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
|
|
lineWidth += fourSpaces - lineWidth % fourSpaces;
|
|
} else {
|
|
if (txt[i][j] == '~') {
|
|
j++;
|
|
if (j == txt[i].length)
|
|
break;
|
|
}
|
|
lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
|
|
}
|
|
}
|
|
var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
|
|
var inOverbar = false;
|
|
for (var j = 0; j < txt[i].length; j++) {
|
|
if (config.kicad_text_formatting) {
|
|
if (txt[i][j] == '\t') {
|
|
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
|
|
offsetx += fourSpaces - offsetx % fourSpaces;
|
|
continue;
|
|
} else if (txt[i][j] == '~') {
|
|
j++;
|
|
if (j == txt[i].length)
|
|
break;
|
|
if (txt[i][j] != '~') {
|
|
inOverbar = !inOverbar;
|
|
}
|
|
}
|
|
}
|
|
var glyph = pcbdata.font_data[txt[i][j]];
|
|
if (inOverbar) {
|
|
var overbarStart = [offsetx, -text.height * 1.4 + offsety];
|
|
var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
|
|
|
|
if (!lastHadOverbar) {
|
|
overbarStart[0] += text.height * 1.4 * tilt;
|
|
lastHadOverbar = true;
|
|
}
|
|
ctx.beginPath();
|
|
ctx.moveTo(...overbarStart);
|
|
ctx.lineTo(...overbarEnd);
|
|
ctx.stroke();
|
|
} else {
|
|
lastHadOverbar = false;
|
|
}
|
|
for (var line of glyph.l) {
|
|
ctx.beginPath();
|
|
ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
|
|
for (var k = 1; k < line.length; k++) {
|
|
ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
|
|
}
|
|
ctx.stroke();
|
|
}
|
|
offsetx += glyph.w * text.width;
|
|
}
|
|
offsety += interline;
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawedge(ctx, scalefactor, edge, color) {
|
|
ctx.strokeStyle = color;
|
|
ctx.fillStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
if ("svgpath" in edge) {
|
|
ctx.stroke(new Path2D(edge.svgpath));
|
|
} else {
|
|
ctx.beginPath();
|
|
if (edge.type == "segment") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(...edge.end);
|
|
}
|
|
if (edge.type == "rect") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(edge.start[0], edge.end[1]);
|
|
ctx.lineTo(...edge.end);
|
|
ctx.lineTo(edge.end[0], edge.start[1]);
|
|
ctx.lineTo(...edge.start);
|
|
}
|
|
if (edge.type == "arc") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
deg2rad(edge.startangle),
|
|
deg2rad(edge.endangle));
|
|
}
|
|
if (edge.type == "circle") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
0, 2 * Math.PI);
|
|
ctx.closePath();
|
|
}
|
|
if (edge.type == "curve") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
|
|
}
|
|
if("filled" in edge && edge.filled)
|
|
ctx.fill();
|
|
else
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
|
|
function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
|
|
// chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
|
|
var path = new Path2D();
|
|
var width = size[0];
|
|
var height = size[1];
|
|
var x = width * -0.5;
|
|
var y = height * -0.5;
|
|
var chamfOffset = Math.min(width, height) * chamfratio;
|
|
path.moveTo(x, 0);
|
|
if (chamfpos & 4) {
|
|
path.lineTo(x, y + height - chamfOffset);
|
|
path.lineTo(x + chamfOffset, y + height);
|
|
path.lineTo(0, y + height);
|
|
} else {
|
|
path.arcTo(x, y + height, x + width, y + height, radius);
|
|
}
|
|
if (chamfpos & 8) {
|
|
path.lineTo(x + width - chamfOffset, y + height);
|
|
path.lineTo(x + width, y + height - chamfOffset);
|
|
path.lineTo(x + width, 0);
|
|
} else {
|
|
path.arcTo(x + width, y + height, x + width, y, radius);
|
|
}
|
|
if (chamfpos & 2) {
|
|
path.lineTo(x + width, y + chamfOffset);
|
|
path.lineTo(x + width - chamfOffset, y);
|
|
path.lineTo(0, y);
|
|
} else {
|
|
path.arcTo(x + width, y, x, y, radius);
|
|
}
|
|
if (chamfpos & 1) {
|
|
path.lineTo(x + chamfOffset, y);
|
|
path.lineTo(x, y + chamfOffset);
|
|
path.lineTo(x, 0);
|
|
} else {
|
|
path.arcTo(x, y, x, y + height, radius);
|
|
}
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getOblongPath(size) {
|
|
return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
|
|
}
|
|
|
|
function getPolygonsPath(shape) {
|
|
if (shape.path2d) {
|
|
return shape.path2d;
|
|
}
|
|
if ("svgpath" in shape) {
|
|
shape.path2d = new Path2D(shape.svgpath);
|
|
} else {
|
|
var path = new Path2D();
|
|
for (var polygon of shape.polygons) {
|
|
path.moveTo(...polygon[0]);
|
|
for (var i = 1; i < polygon.length; i++) {
|
|
path.lineTo(...polygon[i]);
|
|
}
|
|
path.closePath();
|
|
}
|
|
shape.path2d = path;
|
|
}
|
|
return shape.path2d;
|
|
}
|
|
|
|
function drawPolygonShape(ctx, scalefactor, shape, color) {
|
|
ctx.save();
|
|
if (!("svgpath" in shape)) {
|
|
ctx.translate(...shape.pos);
|
|
ctx.rotate(deg2rad(-shape.angle));
|
|
}
|
|
if("filled" in shape && !shape.filled) {
|
|
ctx.strokeStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
ctx.stroke(getPolygonsPath(shape));
|
|
} else {
|
|
ctx.fillStyle = color;
|
|
ctx.fill(getPolygonsPath(shape));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawDrawing(ctx, scalefactor, drawing, color) {
|
|
if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
|
|
drawedge(ctx, scalefactor, drawing, color);
|
|
} else if (drawing.type == "polygon") {
|
|
drawPolygonShape(ctx, scalefactor, drawing, color);
|
|
} else {
|
|
drawText(ctx, drawing, color);
|
|
}
|
|
}
|
|
|
|
function getCirclePath(radius) {
|
|
var path = new Path2D();
|
|
path.arc(0, 0, radius, 0, 2 * Math.PI);
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getCachedPadPath(pad) {
|
|
if (!pad.path2d) {
|
|
// if path2d is not set, build one and cache it on pad object
|
|
if (pad.shape == "rect") {
|
|
pad.path2d = new Path2D();
|
|
pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
|
|
} else if (pad.shape == "oval") {
|
|
pad.path2d = getOblongPath(pad.size);
|
|
} else if (pad.shape == "circle") {
|
|
pad.path2d = getCirclePath(pad.size[0] / 2);
|
|
} else if (pad.shape == "roundrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
|
|
} else if (pad.shape == "chamfrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
|
|
} else if (pad.shape == "custom") {
|
|
pad.path2d = getPolygonsPath(pad);
|
|
}
|
|
}
|
|
return pad.path2d;
|
|
}
|
|
|
|
function drawPad(ctx, pad, color, outline) {
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
if (pad.offset) {
|
|
ctx.translate(...pad.offset);
|
|
}
|
|
ctx.fillStyle = color;
|
|
ctx.strokeStyle = color;
|
|
var path = getCachedPadPath(pad);
|
|
if (outline) {
|
|
ctx.stroke(path);
|
|
} else {
|
|
ctx.fill(path);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawPadHole(ctx, pad, padHoleColor) {
|
|
if (pad.type != "th") return;
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
ctx.fillStyle = padHoleColor;
|
|
if (pad.drillshape == "oblong") {
|
|
ctx.fill(getOblongPath(pad.drillsize));
|
|
} else {
|
|
ctx.fill(getCirclePath(pad.drillsize[0] / 2));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
|
|
if (highlight) {
|
|
// draw bounding box
|
|
if (footprint.layer == layer) {
|
|
ctx.save();
|
|
ctx.globalAlpha = 0.2;
|
|
ctx.translate(...footprint.bbox.pos);
|
|
ctx.rotate(deg2rad(-footprint.bbox.angle));
|
|
ctx.translate(...footprint.bbox.relpos);
|
|
ctx.fillStyle = colors.pad;
|
|
ctx.fillRect(0, 0, ...footprint.bbox.size);
|
|
ctx.globalAlpha = 1;
|
|
ctx.strokeStyle = colors.pad;
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
ctx.strokeRect(0, 0, ...footprint.bbox.size);
|
|
ctx.restore();
|
|
}
|
|
}
|
|
// draw drawings
|
|
for (var drawing of footprint.drawings) {
|
|
if (drawing.layer == layer) {
|
|
drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
|
|
}
|
|
}
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
// draw pads
|
|
if (settings.renderPads) {
|
|
for (var pad of footprint.pads) {
|
|
if (pad.layers.includes(layer)) {
|
|
drawPad(ctx, pad, colors.pad, outline);
|
|
if (pad.pin1 && settings.highlightpin1) {
|
|
drawPad(ctx, pad, colors.outline, true);
|
|
}
|
|
}
|
|
}
|
|
for (var pad of footprint.pads) {
|
|
drawPadHole(ctx, pad, colors.padHole);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawEdgeCuts(canvas, scalefactor) {
|
|
var ctx = canvas.getContext("2d");
|
|
var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
|
|
for (var edge of pcbdata.edges) {
|
|
drawDrawing(ctx, scalefactor, edge, edgecolor);
|
|
}
|
|
}
|
|
|
|
function drawFootprints(canvas, layer, scalefactor, highlight) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
var style = getComputedStyle(topmostdiv);
|
|
|
|
var colors = {
|
|
pad: style.getPropertyValue('--pad-color'),
|
|
padHole: style.getPropertyValue('--pad-hole-color'),
|
|
outline: style.getPropertyValue('--pin1-outline-color'),
|
|
}
|
|
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
var mod = pcbdata.footprints[i];
|
|
var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
|
|
var h = highlightedFootprints.includes(i);
|
|
var d = markedFootprints.has(i);
|
|
if (highlight) {
|
|
if(h && d) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight-both');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
|
|
} else if (h) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
|
|
} else if (d) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
|
|
}
|
|
}
|
|
if( h || d || !highlight) {
|
|
drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
|
|
var ctx = canvas.getContext("2d");
|
|
for (var d of pcbdata.drawings[layername][layer]) {
|
|
if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
|
|
drawedge(ctx, scalefactor, d, edgeColor);
|
|
} else if (d.type == "polygon") {
|
|
drawPolygonShape(ctx, scalefactor, d, polygonColor);
|
|
} else {
|
|
drawText(ctx, d, textColor);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawTracks(canvas, layer, color, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.strokeStyle = color;
|
|
ctx.lineCap = "round";
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if (highlight && highlightedNet != track.net) continue;
|
|
ctx.lineWidth = track.width;
|
|
ctx.beginPath();
|
|
if ('radius' in track) {
|
|
ctx.arc(
|
|
...track.center,
|
|
track.radius,
|
|
deg2rad(track.startangle),
|
|
deg2rad(track.endangle));
|
|
} else {
|
|
ctx.moveTo(...track.start);
|
|
ctx.lineTo(...track.end);
|
|
}
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
|
|
function drawZones(canvas, layer, color, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.strokeStyle = color;
|
|
ctx.fillStyle = color;
|
|
ctx.lineJoin = "round";
|
|
for (var zone of pcbdata.zones[layer]) {
|
|
if (!zone.path2d) {
|
|
zone.path2d = getPolygonsPath(zone);
|
|
}
|
|
if (highlight && highlightedNet != zone.net) continue;
|
|
ctx.fill(zone.path2d, zone.fillrule || "nonzero");
|
|
if (zone.width > 0) {
|
|
ctx.lineWidth = zone.width;
|
|
ctx.stroke(zone.path2d);
|
|
}
|
|
}
|
|
}
|
|
|
|
function clearCanvas(canvas, color = null) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.save();
|
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
if (color) {
|
|
ctx.fillStyle = color;
|
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
} else {
|
|
if (!window.matchMedia("print").matches)
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawNets(canvas, layer, highlight) {
|
|
var style = getComputedStyle(topmostdiv);
|
|
if (settings.renderTracks) {
|
|
var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
|
|
drawTracks(canvas, layer, trackColor, highlight);
|
|
}
|
|
if (settings.renderZones) {
|
|
var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
|
|
drawZones(canvas, layer, zoneColor, highlight);
|
|
}
|
|
if (highlight && settings.renderPads) {
|
|
var padColor = style.getPropertyValue('--pad-color-highlight');
|
|
var padHoleColor = style.getPropertyValue('--pad-hole-color');
|
|
var ctx = canvas.getContext("2d");
|
|
for (var footprint of pcbdata.footprints) {
|
|
// draw pads
|
|
var padDrawn = false;
|
|
for (var pad of footprint.pads) {
|
|
if (highlightedNet != pad.net) continue;
|
|
if (pad.layers.includes(layer)) {
|
|
drawPad(ctx, pad, padColor, false);
|
|
padDrawn = true;
|
|
}
|
|
}
|
|
if (padDrawn) {
|
|
// redraw all pad holes because some pads may overlap
|
|
for (var pad of footprint.pads) {
|
|
drawPadHole(ctx, pad, padHoleColor);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawHighlightsOnLayer(canvasdict, clear = true) {
|
|
if (clear) {
|
|
clearCanvas(canvasdict.highlight);
|
|
}
|
|
if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
|
|
drawFootprints(canvasdict.highlight, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom, true);
|
|
}
|
|
if (highlightedNet !== null) {
|
|
drawNets(canvasdict.highlight, canvasdict.layer, true);
|
|
}
|
|
}
|
|
|
|
function drawHighlights() {
|
|
drawHighlightsOnLayer(allcanvas.front);
|
|
drawHighlightsOnLayer(allcanvas.back);
|
|
}
|
|
|
|
function drawBackground(canvasdict, clear = true) {
|
|
if (clear) {
|
|
clearCanvas(canvasdict.bg);
|
|
clearCanvas(canvasdict.fab);
|
|
clearCanvas(canvasdict.silk);
|
|
}
|
|
|
|
drawNets(canvasdict.bg, canvasdict.layer, false);
|
|
drawFootprints(canvasdict.bg, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom, false);
|
|
|
|
drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);
|
|
|
|
var style = getComputedStyle(topmostdiv);
|
|
var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
|
|
var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
|
|
var textColor = style.getPropertyValue('--silkscreen-text-color');
|
|
if (settings.renderSilkscreen) {
|
|
drawBgLayer(
|
|
"silkscreen", canvasdict.silk, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom,
|
|
edgeColor, polygonColor, textColor);
|
|
}
|
|
edgeColor = style.getPropertyValue('--fabrication-edge-color');
|
|
polygonColor = style.getPropertyValue('--fabrication-polygon-color');
|
|
textColor = style.getPropertyValue('--fabrication-text-color');
|
|
if (settings.renderFabrication) {
|
|
drawBgLayer(
|
|
"fabrication", canvasdict.fab, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom,
|
|
edgeColor, polygonColor, textColor);
|
|
}
|
|
}
|
|
|
|
function prepareCanvas(canvas, flip, transform) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
ctx.scale(transform.zoom, transform.zoom);
|
|
ctx.translate(transform.panx, transform.pany);
|
|
if (flip) {
|
|
ctx.scale(-1, 1);
|
|
}
|
|
ctx.translate(transform.x, transform.y);
|
|
ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
|
|
ctx.scale(transform.s, transform.s);
|
|
}
|
|
|
|
function prepareLayer(canvasdict) {
|
|
var flip = (canvasdict.layer === "B");
|
|
for (var c of ["bg", "fab", "silk", "highlight"]) {
|
|
prepareCanvas(canvasdict[c], flip, canvasdict.transform);
|
|
}
|
|
}
|
|
|
|
function rotateVector(v, angle) {
|
|
angle = deg2rad(angle);
|
|
return [
|
|
v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
|
|
v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
|
|
];
|
|
}
|
|
|
|
function applyRotation(bbox, flip) {
|
|
var corners = [
|
|
[bbox.minx, bbox.miny],
|
|
[bbox.minx, bbox.maxy],
|
|
[bbox.maxx, bbox.miny],
|
|
[bbox.maxx, bbox.maxy],
|
|
];
|
|
corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
|
|
return {
|
|
minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
|
|
miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
|
|
maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
|
|
maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
|
|
}
|
|
}
|
|
|
|
function recalcLayerScale(layerdict, width, height) {
|
|
var flip = (layerdict.layer === "B");
|
|
var bbox = applyRotation(pcbdata.edges_bbox, flip);
|
|
var scalefactor = 0.98 * Math.min(
|
|
width / (bbox.maxx - bbox.minx),
|
|
height / (bbox.maxy - bbox.miny)
|
|
);
|
|
if (scalefactor < 0.1) {
|
|
scalefactor = 1;
|
|
}
|
|
layerdict.transform.s = scalefactor;
|
|
if (flip) {
|
|
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
|
|
} else {
|
|
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
|
|
}
|
|
layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
|
|
for (var c of ["bg", "fab", "silk", "highlight"]) {
|
|
canvas = layerdict[c];
|
|
canvas.width = width;
|
|
canvas.height = height;
|
|
canvas.style.width = (width / devicePixelRatio) + "px";
|
|
canvas.style.height = (height / devicePixelRatio) + "px";
|
|
}
|
|
}
|
|
|
|
function redrawCanvas(layerdict) {
|
|
prepareLayer(layerdict);
|
|
drawBackground(layerdict);
|
|
drawHighlightsOnLayer(layerdict);
|
|
}
|
|
|
|
function resizeCanvas(layerdict) {
|
|
var canvasdivid = {
|
|
"F": "frontcanvas",
|
|
"B": "backcanvas"
|
|
} [layerdict.layer];
|
|
var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
|
|
var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
|
|
recalcLayerScale(layerdict, width, height);
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function resizeAll() {
|
|
resizeCanvas(allcanvas.front);
|
|
resizeCanvas(allcanvas.back);
|
|
}
|
|
|
|
function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
|
|
var A = x - x1;
|
|
var B = y - y1;
|
|
var C = x2 - x1;
|
|
var D = y2 - y1;
|
|
|
|
var dot = A * C + B * D;
|
|
var len_sq = C * C + D * D;
|
|
var dx, dy;
|
|
if (len_sq == 0) {
|
|
// start and end of the segment coincide
|
|
dx = x - x1;
|
|
dy = y - y1;
|
|
} else {
|
|
var param = dot / len_sq;
|
|
var xx, yy;
|
|
if (param < 0) {
|
|
xx = x1;
|
|
yy = y1;
|
|
} else if (param > 1) {
|
|
xx = x2;
|
|
yy = y2;
|
|
} else {
|
|
xx = x1 + param * C;
|
|
yy = y1 + param * D;
|
|
}
|
|
dx = x - xx;
|
|
dy = y - yy;
|
|
}
|
|
return dx * dx + dy * dy <= d * d;
|
|
}
|
|
|
|
function modulo(n, mod) {
|
|
return ((n % mod) + mod) % mod;
|
|
}
|
|
|
|
function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
|
|
var dx = x - xc;
|
|
var dy = y - yc;
|
|
var r_sq = dx * dx + dy * dy;
|
|
var rmin = Math.max(0, radius - d);
|
|
var rmax = radius + d;
|
|
|
|
if (r_sq < rmin * rmin || r_sq > rmax * rmax)
|
|
return false;
|
|
|
|
var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
|
|
var dx1 = xc + radius * Math.cos(angle1) - x;
|
|
var dy1 = yc + radius * Math.sin(angle1) - y;
|
|
if (dx1 * dx1 + dy1 * dy1 <= d * d)
|
|
return true;
|
|
|
|
var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
|
|
var dx2 = xc + radius * Math.cos(angle2) - x;
|
|
var dy2 = yc + radius * Math.sin(angle2) - y;
|
|
if (dx2 * dx2 + dy2 * dy2 <= d * d)
|
|
return true;
|
|
|
|
var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
|
|
if (angle1 > angle2)
|
|
return (angle >= angle2 || angle <= angle1);
|
|
else
|
|
return (angle >= angle1 && angle <= angle2);
|
|
}
|
|
|
|
function pointWithinPad(x, y, pad) {
|
|
var v = [x - pad.pos[0], y - pad.pos[1]];
|
|
v = rotateVector(v, pad.angle);
|
|
if (pad.offset) {
|
|
v[0] -= pad.offset[0];
|
|
v[1] -= pad.offset[1];
|
|
}
|
|
return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
|
|
}
|
|
|
|
function netHitScan(layer, x, y) {
|
|
// Check track segments
|
|
if (settings.renderTracks && pcbdata.tracks) {
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if ('radius' in track) {
|
|
if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
|
|
return track.net;
|
|
}
|
|
} else {
|
|
if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
|
|
return track.net;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// Check pads
|
|
if (settings.renderPads) {
|
|
for (var footprint of pcbdata.footprints) {
|
|
for (var pad of footprint.pads) {
|
|
if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
|
|
return pad.net;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function pointWithinFootprintBbox(x, y, bbox) {
|
|
var v = [x - bbox.pos[0], y - bbox.pos[1]];
|
|
v = rotateVector(v, bbox.angle);
|
|
return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
|
|
bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
|
|
}
|
|
|
|
function bboxHitScan(layer, x, y) {
|
|
var result = [];
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
var footprint = pcbdata.footprints[i];
|
|
if (footprint.layer == layer) {
|
|
if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
|
|
result.push(i);
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function handlePointerDown(e, layerdict) {
|
|
if (e.button != 0 && e.button != 1) {
|
|
return;
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
layerdict.pointerStates[e.pointerId] = {
|
|
distanceTravelled: 0,
|
|
lastX: e.offsetX,
|
|
lastY: e.offsetY,
|
|
downTime: Date.now(),
|
|
};
|
|
}
|
|
|
|
function handleMouseClick(e, layerdict) {
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
var x = e.offsetX;
|
|
var y = e.offsetY;
|
|
var t = layerdict.transform;
|
|
var flip = layerdict.layer === "B";
|
|
if (flip) {
|
|
x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
|
|
} else {
|
|
x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
|
|
}
|
|
y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
|
|
var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0));
|
|
if ("nets" in pcbdata) {
|
|
var net = netHitScan(layerdict.layer, ...v);
|
|
if (net !== highlightedNet) {
|
|
netClicked(net);
|
|
}
|
|
}
|
|
if (highlightedNet === null) {
|
|
var footprints = bboxHitScan(layerdict.layer, ...v);
|
|
if (footprints.length > 0) {
|
|
footprintsClicked(footprints);
|
|
}
|
|
}
|
|
}
|
|
|
|
function handlePointerLeave(e, layerdict) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
delete layerdict.pointerStates[e.pointerId];
|
|
}
|
|
|
|
function resetTransform(layerdict) {
|
|
layerdict.transform.panx = 0;
|
|
layerdict.transform.pany = 0;
|
|
layerdict.transform.zoom = 1;
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function handlePointerUp(e, layerdict) {
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (e.button == 2) {
|
|
// Reset pan and zoom on right click.
|
|
resetTransform(layerdict);
|
|
layerdict.anotherPointerTapped = false;
|
|
return;
|
|
}
|
|
|
|
// We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
|
|
var ptr = layerdict.pointerStates[e.pointerId];
|
|
ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);
|
|
|
|
if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
|
|
if (Object.keys(layerdict.pointerStates).length == 1) {
|
|
if (layerdict.anotherPointerTapped) {
|
|
// This is the second pointer coming off of a two-finger tap
|
|
resetTransform(layerdict);
|
|
} else {
|
|
// This is just a regular tap
|
|
handleMouseClick(e, layerdict);
|
|
}
|
|
layerdict.anotherPointerTapped = false;
|
|
} else {
|
|
// This is the first finger coming off of what could become a two-finger tap
|
|
layerdict.anotherPointerTapped = true;
|
|
}
|
|
} else {
|
|
if (!settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
layerdict.anotherPointerTapped = false;
|
|
}
|
|
|
|
delete layerdict.pointerStates[e.pointerId];
|
|
}
|
|
|
|
function handlePointerMove(e, layerdict) {
|
|
if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
|
|
return;
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
var thisPtr = layerdict.pointerStates[e.pointerId];
|
|
|
|
var dx = e.offsetX - thisPtr.lastX;
|
|
var dy = e.offsetY - thisPtr.lastY;
|
|
|
|
// If this number is low on pointer up, we count the action as a click
|
|
thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);
|
|
|
|
if (Object.keys(layerdict.pointerStates).length == 1) {
|
|
// This is a simple drag
|
|
layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
|
|
layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
|
|
} else if (Object.keys(layerdict.pointerStates).length == 2) {
|
|
var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];
|
|
|
|
var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
|
|
var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));
|
|
|
|
var scaleFactor = newDist / oldDist;
|
|
|
|
if (scaleFactor != NaN) {
|
|
layerdict.transform.zoom *= scaleFactor;
|
|
|
|
var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
|
|
layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
|
|
layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
|
|
}
|
|
}
|
|
|
|
thisPtr.lastX = e.offsetX;
|
|
thisPtr.lastY = e.offsetY;
|
|
|
|
if (settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
}
|
|
|
|
function handleMouseWheel(e, layerdict) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var t = layerdict.transform;
|
|
var wheeldelta = e.deltaY;
|
|
if (e.deltaMode == 1) {
|
|
// FF only, scroll by lines
|
|
wheeldelta *= 30;
|
|
} else if (e.deltaMode == 2) {
|
|
wheeldelta *= 300;
|
|
}
|
|
var m = Math.pow(1.1, -wheeldelta / 40);
|
|
// Limit amount of zoom per tick.
|
|
if (m > 2) {
|
|
m = 2;
|
|
} else if (m < 0.5) {
|
|
m = 0.5;
|
|
}
|
|
t.zoom *= m;
|
|
var zoomd = (1 - m) / t.zoom;
|
|
t.panx += devicePixelRatio * e.offsetX * zoomd;
|
|
t.pany += devicePixelRatio * e.offsetY * zoomd;
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function addMouseHandlers(div, layerdict) {
|
|
div.addEventListener("pointerdown", function(e) {
|
|
handlePointerDown(e, layerdict);
|
|
});
|
|
div.addEventListener("pointermove", function(e) {
|
|
handlePointerMove(e, layerdict);
|
|
});
|
|
div.addEventListener("pointerup", function(e) {
|
|
handlePointerUp(e, layerdict);
|
|
});
|
|
var pointerleave = function(e) {
|
|
handlePointerLeave(e, layerdict);
|
|
}
|
|
div.addEventListener("pointercancel", pointerleave);
|
|
div.addEventListener("pointerleave", pointerleave);
|
|
div.addEventListener("pointerout", pointerleave);
|
|
|
|
div.onwheel = function(e) {
|
|
handleMouseWheel(e, layerdict);
|
|
}
|
|
for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
|
|
element.addEventListener("contextmenu", function(e) {
|
|
e.preventDefault();
|
|
}, false);
|
|
}
|
|
}
|
|
|
|
function setRedrawOnDrag(value) {
|
|
settings.redrawOnDrag = value;
|
|
writeStorage("redrawOnDrag", value);
|
|
}
|
|
|
|
function setBoardRotation(value) {
|
|
settings.boardRotation = value * 5;
|
|
writeStorage("boardRotation", settings.boardRotation);
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
resizeAll();
|
|
}
|
|
|
|
function setOffsetBackRotation(value) {
|
|
settings.offsetBackRotation = value;
|
|
writeStorage("offsetBackRotation", value);
|
|
resizeAll();
|
|
}
|
|
|
|
function initRender() {
|
|
allcanvas = {
|
|
front: {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
pointerStates: {},
|
|
anotherPointerTapped: false,
|
|
bg: document.getElementById("F_bg"),
|
|
fab: document.getElementById("F_fab"),
|
|
silk: document.getElementById("F_slk"),
|
|
highlight: document.getElementById("F_hl"),
|
|
layer: "F",
|
|
},
|
|
back: {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
pointerStates: {},
|
|
anotherPointerTapped: false,
|
|
bg: document.getElementById("B_bg"),
|
|
fab: document.getElementById("B_fab"),
|
|
silk: document.getElementById("B_slk"),
|
|
highlight: document.getElementById("B_hl"),
|
|
layer: "B",
|
|
}
|
|
};
|
|
addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
|
|
addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/*
|
|
* Table reordering via Drag'n'Drop
|
|
* Inspired by: https://htmldom.dev/drag-and-drop-table-column
|
|
*/
|
|
|
|
function setBomHandlers() {
|
|
|
|
const bom = document.getElementById('bomtable');
|
|
|
|
let dragName;
|
|
let placeHolderElements;
|
|
let draggingElement;
|
|
let forcePopulation;
|
|
let xOffset;
|
|
let yOffset;
|
|
let wasDragged;
|
|
|
|
const mouseUpHandler = function(e) {
|
|
// Delete dragging element
|
|
draggingElement.remove();
|
|
|
|
// Make BOM selectable again
|
|
bom.style.removeProperty("userSelect");
|
|
|
|
// Remove listeners
|
|
document.removeEventListener('mousemove', mouseMoveHandler);
|
|
document.removeEventListener('mouseup', mouseUpHandler);
|
|
|
|
if (wasDragged) {
|
|
// Redraw whole BOM
|
|
populateBomTable();
|
|
}
|
|
}
|
|
|
|
const mouseMoveHandler = function(e) {
|
|
// Notice the dragging
|
|
wasDragged = true;
|
|
|
|
// Make the dragged element visible
|
|
draggingElement.style.removeProperty("display");
|
|
|
|
// Set elements position to mouse position
|
|
draggingElement.style.left = `${e.screenX - xOffset}px`;
|
|
draggingElement.style.top = `${e.screenY - yOffset}px`;
|
|
|
|
// Forced redrawing of BOM table
|
|
if (forcePopulation) {
|
|
forcePopulation = false;
|
|
// Copy array
|
|
phe = Array.from(placeHolderElements);
|
|
// populate BOM table again
|
|
populateBomHeader(dragName, phe);
|
|
populateBomBody(dragName, phe);
|
|
}
|
|
|
|
// Set up array of hidden columns
|
|
var hiddenColumns = Array.from(settings.hiddenColumns);
|
|
// In the ungrouped mode, quantity don't exist
|
|
if (settings.bommode === "ungrouped")
|
|
hiddenColumns.push("Quantity");
|
|
// If no checkbox fields can be found, we consider them hidden
|
|
if (settings.checkboxes.length == 0)
|
|
hiddenColumns.push("checkboxes");
|
|
|
|
// Get table headers and group them into checkboxes, extrafields and normal headers
|
|
const bh = document.getElementById("bomhead");
|
|
headers = Array.from(bh.querySelectorAll("th"))
|
|
headers.shift() // numCol is not part of the columnOrder
|
|
headerGroups = []
|
|
lastCompoundClass = null;
|
|
for (i = 0; i < settings.columnOrder.length; i++) {
|
|
cElem = settings.columnOrder[i];
|
|
if (hiddenColumns.includes(cElem)) {
|
|
// Hidden columns appear as a dummy element
|
|
headerGroups.push([]);
|
|
continue;
|
|
}
|
|
elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
|
|
if (elem.classList.contains("bom-checkbox")) {
|
|
if (lastCompoundClass === "bom-checkbox") {
|
|
cbGroup = headerGroups.pop();
|
|
cbGroup.push(elem);
|
|
headerGroups.push(cbGroup);
|
|
} else {
|
|
lastCompoundClass = "bom-checkbox";
|
|
headerGroups.push([elem])
|
|
}
|
|
} else {
|
|
headerGroups.push([elem])
|
|
}
|
|
}
|
|
|
|
// Copy settings.columnOrder
|
|
var columns = Array.from(settings.columnOrder)
|
|
|
|
// Set up array with indices of hidden columns
|
|
var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
|
|
var dragIndex = columns.indexOf(dragName);
|
|
var swapIndex = dragIndex;
|
|
var swapDone = false;
|
|
|
|
// Check if the current dragged element is swapable with the left or right element
|
|
if (dragIndex > 0) {
|
|
// Get left headers boundingbox
|
|
swapIndex = dragIndex - 1;
|
|
while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
|
|
swapIndex--;
|
|
if (!hiddenIndices.includes(swapIndex)) {
|
|
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
|
|
if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
|
|
swapElement = columns[dragIndex];
|
|
columns.splice(dragIndex, 1);
|
|
columns.splice(swapIndex, 0, swapElement);
|
|
forcePopulation = true;
|
|
swapDone = true;
|
|
}
|
|
}
|
|
}
|
|
if ((!swapDone) && dragIndex < headerGroups.length - 1) {
|
|
// Get right headers boundingbox
|
|
swapIndex = dragIndex + 1;
|
|
while (hiddenIndices.includes(swapIndex))
|
|
swapIndex++;
|
|
if (swapIndex < headerGroups.length) {
|
|
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
|
|
if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
|
|
swapElement = columns[dragIndex];
|
|
columns.splice(dragIndex, 1);
|
|
columns.splice(swapIndex, 0, swapElement);
|
|
forcePopulation = true;
|
|
swapDone = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Write back change to storage
|
|
if (swapDone) {
|
|
settings.columnOrder = columns
|
|
writeStorage("columnOrder", JSON.stringify(columns));
|
|
}
|
|
|
|
}
|
|
|
|
const mouseDownHandler = function(e) {
|
|
var target = e.target;
|
|
if (target.tagName.toLowerCase() != "td")
|
|
target = target.parentElement;
|
|
|
|
// Used to check if a dragging has ever happened
|
|
wasDragged = false;
|
|
|
|
// Create new element which will be displayed as the dragged column
|
|
draggingElement = document.createElement("div")
|
|
draggingElement.classList.add("dragging");
|
|
draggingElement.style.display = "none";
|
|
draggingElement.style.position = "absolute";
|
|
draggingElement.style.overflow = "hidden";
|
|
|
|
// Get bomhead and bombody elements
|
|
const bh = document.getElementById("bomhead");
|
|
const bb = document.getElementById("bombody");
|
|
|
|
// Get all compound headers for the current column
|
|
var compoundHeaders;
|
|
if (target.classList.contains("bom-checkbox")) {
|
|
compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
|
|
} else {
|
|
compoundHeaders = [target];
|
|
}
|
|
|
|
// Create new table which will display the column
|
|
var newTable = document.createElement("table");
|
|
newTable.classList.add("bom");
|
|
newTable.style.background = "white";
|
|
draggingElement.append(newTable);
|
|
|
|
// Create new header element
|
|
var newHeader = document.createElement("thead");
|
|
newTable.append(newHeader);
|
|
|
|
// Set up array for storing all placeholder elements
|
|
placeHolderElements = [];
|
|
|
|
// Add all compound headers to the new thead element and placeholders
|
|
compoundHeaders.forEach(function(h) {
|
|
clone = cloneElementWithDimensions(h);
|
|
newHeader.append(clone);
|
|
placeHolderElements.push(clone);
|
|
});
|
|
|
|
// Create new body element
|
|
var newBody = document.createElement("tbody");
|
|
newTable.append(newBody);
|
|
|
|
// Get indices for compound headers
|
|
var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));
|
|
|
|
// For each row in the BOM body...
|
|
var rows = bb.querySelectorAll("tr");
|
|
rows.forEach(function(row) {
|
|
// ..get the cells for the compound column
|
|
const tds = row.querySelectorAll("td");
|
|
var copytds = idxs.map(i => tds[i]);
|
|
// Add them to the new element and the placeholders
|
|
var newRow = document.createElement("tr");
|
|
copytds.forEach(function(td) {
|
|
clone = cloneElementWithDimensions(td);
|
|
newRow.append(clone);
|
|
placeHolderElements.push(clone);
|
|
});
|
|
newBody.append(newRow);
|
|
});
|
|
|
|
// Compute width for compound header
|
|
var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
|
|
draggingElement.style.width = `${width}px`;
|
|
|
|
// Insert the new dragging element and disable selection on BOM
|
|
bom.insertBefore(draggingElement, null);
|
|
bom.style.userSelect = "none";
|
|
|
|
// Determine the mouse position offset
|
|
xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
|
|
yOffset = e.screenY - compoundHeaders[0].offsetTop;
|
|
|
|
// Get name for the column in settings.columnOrder
|
|
dragName = getColumnOrderName(target);
|
|
|
|
// Change text and class for placeholder elements
|
|
placeHolderElements = placeHolderElements.map(function(e) {
|
|
newElem = cloneElementWithDimensions(e);
|
|
newElem.textContent = "";
|
|
newElem.classList.add("placeholder");
|
|
return newElem;
|
|
});
|
|
|
|
// On next mouse move, the whole BOM needs to be redrawn to show the placeholders
|
|
forcePopulation = true;
|
|
|
|
// Add listeners for move and up on mouse
|
|
document.addEventListener('mousemove', mouseMoveHandler);
|
|
document.addEventListener('mouseup', mouseUpHandler);
|
|
}
|
|
|
|
// In netlist mode, there is nothing to reorder
|
|
if (settings.bommode === "netlist")
|
|
return;
|
|
|
|
// Add mouseDownHandler to every column except the numCol
|
|
bom.querySelectorAll("th")
|
|
.forEach(function(head) {
|
|
if (!head.classList.contains("numCol")) {
|
|
head.onmousedown = mouseDownHandler;
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
function getBoundingClientRectFromMultiple(elements) {
|
|
var elems = Array.from(elements);
|
|
|
|
if (elems.length == 0)
|
|
return null;
|
|
|
|
var box = elems.shift()
|
|
.getBoundingClientRect();
|
|
|
|
elems.forEach(function(elem) {
|
|
var elembox = elem.getBoundingClientRect();
|
|
box.left = Math.min(elembox.left, box.left);
|
|
box.top = Math.min(elembox.top, box.top);
|
|
box.width += elembox.width;
|
|
box.height = Math.max(elembox.height, box.height);
|
|
});
|
|
|
|
return box;
|
|
}
|
|
|
|
function cloneElementWithDimensions(elem) {
|
|
var newElem = elem.cloneNode(true);
|
|
newElem.style.height = window.getComputedStyle(elem).height;
|
|
newElem.style.width = window.getComputedStyle(elem).width;
|
|
return newElem;
|
|
}
|
|
|
|
function getBomTableHeaderIndex(elem) {
|
|
const bh = document.getElementById('bomhead');
|
|
const ths = Array.from(bh.querySelectorAll("th"));
|
|
return ths.indexOf(elem);
|
|
}
|
|
|
|
function getColumnOrderName(elem) {
|
|
var cname = elem.getAttribute("col_name");
|
|
if (cname === "bom-checkbox")
|
|
return "checkboxes";
|
|
else
|
|
return cname;
|
|
}
|
|
|
|
function resizableGrid(tablehead) {
|
|
var cols = tablehead.firstElementChild.children;
|
|
var rowWidth = tablehead.offsetWidth;
|
|
|
|
for (var i = 1; i < cols.length; i++) {
|
|
if (cols[i].classList.contains("bom-checkbox"))
|
|
continue;
|
|
cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
|
|
}
|
|
|
|
for (var i = 1; i < cols.length - 1; i++) {
|
|
var div = document.createElement('div');
|
|
div.className = "column-width-handle";
|
|
cols[i].appendChild(div);
|
|
setListeners(div);
|
|
}
|
|
|
|
function setListeners(div) {
|
|
var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;
|
|
|
|
div.addEventListener('mousedown', function(e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
curCol = e.target.parentElement;
|
|
nxtCol = curCol.nextElementSibling;
|
|
startX = e.pageX;
|
|
|
|
var padding = paddingDiff(curCol);
|
|
|
|
rowWidth = curCol.parentElement.offsetWidth;
|
|
curColWidth = curCol.clientWidth - padding;
|
|
nxtColWidth = nxtCol.clientWidth - padding;
|
|
});
|
|
|
|
document.addEventListener('mousemove', function(e) {
|
|
if (startX) {
|
|
var diffX = e.pageX - startX;
|
|
diffX = -Math.min(-diffX, curColWidth - 20);
|
|
diffX = Math.min(diffX, nxtColWidth - 20);
|
|
|
|
curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
|
|
nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
|
|
console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
|
|
}
|
|
});
|
|
|
|
document.addEventListener('mouseup', function(e) {
|
|
curCol = undefined;
|
|
nxtCol = undefined;
|
|
startX = undefined;
|
|
nxtColWidth = undefined;
|
|
curColWidth = undefined
|
|
});
|
|
}
|
|
|
|
function paddingDiff(col) {
|
|
|
|
if (getStyleVal(col, 'box-sizing') == 'border-box') {
|
|
return 0;
|
|
}
|
|
|
|
var padLeft = getStyleVal(col, 'padding-left');
|
|
var padRight = getStyleVal(col, 'padding-right');
|
|
return (parseInt(padLeft) + parseInt(padRight));
|
|
|
|
}
|
|
|
|
function getStyleVal(elm, css) {
|
|
return (window.getComputedStyle(elm, null).getPropertyValue(css))
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* DOM manipulation and misc code */
|
|
|
|
var bomsplit;
|
|
var canvassplit;
|
|
var initDone = false;
|
|
var bomSortFunction = null;
|
|
var currentSortColumn = null;
|
|
var currentSortOrder = null;
|
|
var currentHighlightedRowId;
|
|
var highlightHandlers = [];
|
|
var footprintIndexToHandler = {};
|
|
var netsToHandler = {};
|
|
var markedFootprints = new Set();
|
|
var highlightedFootprints = [];
|
|
var highlightedNet = null;
|
|
var lastClicked;
|
|
|
|
function dbg(html) {
|
|
dbgdiv.innerHTML = html;
|
|
}
|
|
|
|
function redrawIfInitDone() {
|
|
if (initDone) {
|
|
redrawCanvas(allcanvas.front);
|
|
redrawCanvas(allcanvas.back);
|
|
}
|
|
}
|
|
|
|
function padsVisible(value) {
|
|
writeStorage("padsVisible", value);
|
|
settings.renderPads = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function referencesVisible(value) {
|
|
writeStorage("referencesVisible", value);
|
|
settings.renderReferences = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function valuesVisible(value) {
|
|
writeStorage("valuesVisible", value);
|
|
settings.renderValues = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function tracksVisible(value) {
|
|
writeStorage("tracksVisible", value);
|
|
settings.renderTracks = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function zonesVisible(value) {
|
|
writeStorage("zonesVisible", value);
|
|
settings.renderZones = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function dnpOutline(value) {
|
|
writeStorage("dnpOutline", value);
|
|
settings.renderDnpOutline = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setDarkMode(value) {
|
|
if (value) {
|
|
topmostdiv.classList.add("dark");
|
|
} else {
|
|
topmostdiv.classList.remove("dark");
|
|
}
|
|
writeStorage("darkmode", value);
|
|
settings.darkMode = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setShowBOMColumn(field, value) {
|
|
if (field === "references") {
|
|
var rl = document.getElementById("reflookup");
|
|
rl.disabled = !value;
|
|
if (!value) {
|
|
rl.value = "";
|
|
updateRefLookup("");
|
|
}
|
|
}
|
|
|
|
var n = settings.hiddenColumns.indexOf(field);
|
|
if (value) {
|
|
if (n != -1) {
|
|
settings.hiddenColumns.splice(n, 1);
|
|
}
|
|
} else {
|
|
if (n == -1) {
|
|
settings.hiddenColumns.push(field);
|
|
}
|
|
}
|
|
|
|
writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
|
|
|
|
if (initDone) {
|
|
populateBomTable();
|
|
}
|
|
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
|
|
function setFullscreen(value) {
|
|
if (value) {
|
|
document.documentElement.requestFullscreen();
|
|
} else {
|
|
document.exitFullscreen();
|
|
}
|
|
}
|
|
|
|
function fabricationVisible(value) {
|
|
writeStorage("fabricationVisible", value);
|
|
settings.renderFabrication = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function silkscreenVisible(value) {
|
|
writeStorage("silkscreenVisible", value);
|
|
settings.renderSilkscreen = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setHighlightPin1(value) {
|
|
writeStorage("highlightpin1", value);
|
|
settings.highlightpin1 = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function getStoredCheckboxRefs(checkbox) {
|
|
function convert(ref) {
|
|
var intref = parseInt(ref);
|
|
if (isNaN(intref)) {
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.footprints[i].ref == ref) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
} else {
|
|
return intref;
|
|
}
|
|
}
|
|
if (!(checkbox in settings.checkboxStoredRefs)) {
|
|
var val = readStorage("checkbox_" + checkbox);
|
|
settings.checkboxStoredRefs[checkbox] = val ? val : "";
|
|
}
|
|
if (!settings.checkboxStoredRefs[checkbox]) {
|
|
return new Set();
|
|
} else {
|
|
return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
|
|
}
|
|
}
|
|
|
|
function getCheckboxState(checkbox, references) {
|
|
var storedRefsSet = getStoredCheckboxRefs(checkbox);
|
|
var currentRefsSet = new Set(references.map(r => r[1]));
|
|
// Get difference of current - stored
|
|
var difference = new Set(currentRefsSet);
|
|
for (ref of storedRefsSet) {
|
|
difference.delete(ref);
|
|
}
|
|
if (difference.size == 0) {
|
|
// All the current refs are stored
|
|
return "checked";
|
|
} else if (difference.size == currentRefsSet.size) {
|
|
// None of the current refs are stored
|
|
return "unchecked";
|
|
} else {
|
|
// Some of the refs are stored
|
|
return "indeterminate";
|
|
}
|
|
}
|
|
|
|
function setBomCheckboxState(checkbox, element, references) {
|
|
var state = getCheckboxState(checkbox, references);
|
|
element.checked = (state == "checked");
|
|
element.indeterminate = (state == "indeterminate");
|
|
}
|
|
|
|
function createCheckboxChangeHandler(checkbox, references, row) {
|
|
return function () {
|
|
refsSet = getStoredCheckboxRefs(checkbox);
|
|
var markWhenChecked = settings.markWhenChecked == checkbox;
|
|
eventArgs = {
|
|
checkbox: checkbox,
|
|
refs: references,
|
|
}
|
|
if (this.checked) {
|
|
// checkbox ticked
|
|
for (var ref of references) {
|
|
refsSet.add(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.add("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.add(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'checked';
|
|
} else {
|
|
// checkbox unticked
|
|
for (var ref of references) {
|
|
refsSet.delete(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.remove("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.delete(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'unchecked';
|
|
}
|
|
settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
updateCheckboxStats(checkbox);
|
|
EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
|
|
}
|
|
}
|
|
|
|
function clearHighlightedFootprints() {
|
|
if (currentHighlightedRowId) {
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
currentHighlightedRowId = null;
|
|
highlightedFootprints = [];
|
|
highlightedNet = null;
|
|
}
|
|
}
|
|
|
|
function createRowHighlightHandler(rowid, refs, net) {
|
|
return function () {
|
|
if (currentHighlightedRowId) {
|
|
if (currentHighlightedRowId == rowid) {
|
|
return;
|
|
}
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
}
|
|
document.getElementById(rowid).classList.add("highlighted");
|
|
currentHighlightedRowId = rowid;
|
|
highlightedFootprints = refs ? refs.map(r => r[1]) : [];
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
|
|
rowid: rowid,
|
|
refs: refs,
|
|
net: net
|
|
});
|
|
}
|
|
}
|
|
|
|
function entryMatches(entry) {
|
|
if (settings.bommode == "netlist") {
|
|
// entry is just a net name
|
|
return entry.toLowerCase().indexOf(filter) >= 0;
|
|
}
|
|
// check refs
|
|
if (!settings.hiddenColumns.includes("references")) {
|
|
for (var ref of entry) {
|
|
if (ref[0].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
// check fields
|
|
for (var i in config.fields) {
|
|
var f = config.fields[i];
|
|
if (!settings.hiddenColumns.includes(f)) {
|
|
for (var ref of entry) {
|
|
if (pcbdata.bom.fields[ref[1]][i].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function findRefInEntry(entry) {
|
|
return entry.filter(r => r[0].toLowerCase() == reflookup);
|
|
}
|
|
|
|
function highlightFilter(s) {
|
|
if (!filter) {
|
|
return s;
|
|
}
|
|
var parts = s.toLowerCase().split(filter);
|
|
if (parts.length == 1) {
|
|
return s;
|
|
}
|
|
var r = "";
|
|
var pos = 0;
|
|
for (var i in parts) {
|
|
if (i > 0) {
|
|
r += '<mark class="highlight">' +
|
|
s.substring(pos, pos + filter.length) +
|
|
'</mark>';
|
|
pos += filter.length;
|
|
}
|
|
r += s.substring(pos, pos + parts[i].length);
|
|
pos += parts[i].length;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
function checkboxSetUnsetAllHandler(checkboxname) {
|
|
return function () {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var allset = true;
|
|
var checkbox;
|
|
var row;
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
if (!checkbox.checked || checkbox.indeterminate) {
|
|
allset = false;
|
|
break;
|
|
}
|
|
}
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = !allset;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
}
|
|
}
|
|
|
|
function createColumnHeader(name, cls, comparator, is_checkbox = false) {
|
|
var th = document.createElement("TH");
|
|
th.innerHTML = name;
|
|
th.classList.add(cls);
|
|
if (is_checkbox)
|
|
th.setAttribute("col_name", "bom-checkbox");
|
|
else
|
|
th.setAttribute("col_name", name);
|
|
var span = document.createElement("SPAN");
|
|
span.classList.add("sortmark");
|
|
span.classList.add("none");
|
|
th.appendChild(span);
|
|
var spacer = document.createElement("div");
|
|
spacer.className = "column-spacer";
|
|
th.appendChild(spacer);
|
|
spacer.onclick = function () {
|
|
if (currentSortColumn && th !== currentSortColumn) {
|
|
// Currently sorted by another column
|
|
currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
if (currentSortColumn && th === currentSortColumn) {
|
|
// Already sorted by this column
|
|
if (currentSortOrder == "asc") {
|
|
// Sort by this column, descending order
|
|
bomSortFunction = function (a, b) {
|
|
return -comparator(a, b);
|
|
}
|
|
currentSortColumn.childNodes[1].classList.remove("asc");
|
|
currentSortColumn.childNodes[1].classList.add("desc");
|
|
currentSortOrder = "desc";
|
|
} else {
|
|
// Unsort
|
|
bomSortFunction = null;
|
|
currentSortColumn.childNodes[1].classList.remove("desc");
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
} else {
|
|
// Sort by this column, ascending order
|
|
bomSortFunction = comparator;
|
|
currentSortColumn = th;
|
|
currentSortColumn.childNodes[1].classList.remove("none");
|
|
currentSortColumn.childNodes[1].classList.add("asc");
|
|
currentSortOrder = "asc";
|
|
}
|
|
populateBomBody();
|
|
}
|
|
if (is_checkbox) {
|
|
spacer.onclick = fancyDblClickHandler(
|
|
spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
|
|
}
|
|
return th;
|
|
}
|
|
|
|
function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
|
|
while (bomhead.firstChild) {
|
|
bomhead.removeChild(bomhead.firstChild);
|
|
}
|
|
var tr = document.createElement("TR");
|
|
var th = document.createElement("TH");
|
|
th.classList.add("numCol");
|
|
|
|
var vismenu = document.createElement("div");
|
|
vismenu.id = "vismenu";
|
|
vismenu.classList.add("menu");
|
|
|
|
var visbutton = document.createElement("div");
|
|
visbutton.classList.add("visbtn");
|
|
visbutton.classList.add("hideonprint");
|
|
|
|
var viscontent = document.createElement("div");
|
|
viscontent.classList.add("menu-content");
|
|
viscontent.id = "vismenu-content";
|
|
|
|
settings.columnOrder.forEach(column => {
|
|
if (typeof column !== "string")
|
|
return;
|
|
|
|
// Skip empty columns
|
|
if (column === "checkboxes" && settings.checkboxes.length == 0)
|
|
return;
|
|
else if (column === "Quantity" && settings.bommode == "ungrouped")
|
|
return;
|
|
|
|
var label = document.createElement("label");
|
|
label.classList.add("menu-label");
|
|
|
|
var input = document.createElement("input");
|
|
input.classList.add("visibility_checkbox");
|
|
input.type = "checkbox";
|
|
input.onchange = function (e) {
|
|
setShowBOMColumn(column, e.target.checked)
|
|
};
|
|
input.checked = !(settings.hiddenColumns.includes(column));
|
|
|
|
label.appendChild(input);
|
|
if (column.length > 0)
|
|
label.append(column[0].toUpperCase() + column.slice(1));
|
|
|
|
viscontent.appendChild(label);
|
|
});
|
|
|
|
viscontent.childNodes[0].classList.add("menu-label-top");
|
|
|
|
vismenu.appendChild(visbutton);
|
|
if (settings.bommode != "netlist") {
|
|
vismenu.appendChild(viscontent);
|
|
th.appendChild(vismenu);
|
|
}
|
|
tr.appendChild(th);
|
|
|
|
var checkboxCompareClosure = function (checkbox) {
|
|
return (a, b) => {
|
|
var stateA = getCheckboxState(checkbox, a);
|
|
var stateB = getCheckboxState(checkbox, b);
|
|
if (stateA > stateB) return -1;
|
|
if (stateA < stateB) return 1;
|
|
return 0;
|
|
}
|
|
}
|
|
var stringFieldCompareClosure = function (fieldIndex) {
|
|
return (a, b) => {
|
|
var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
|
|
var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
|
|
if (fa != fb) return fa > fb ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
|
|
var compareRefs = (a, b) => {
|
|
var ra = referenceRegex.exec(a);
|
|
var rb = referenceRegex.exec(b);
|
|
if (ra === null || rb === null) {
|
|
if (a != b) return a > b ? 1 : -1;
|
|
return 0;
|
|
} else {
|
|
if (ra.groups.prefix != rb.groups.prefix) {
|
|
return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
|
|
}
|
|
if (ra.groups.number != rb.groups.number) {
|
|
return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
if (settings.bommode == "netlist") {
|
|
th = createColumnHeader("Net name", "bom-netname", (a, b) => {
|
|
if (a > b) return -1;
|
|
if (a < b) return 1;
|
|
return 0;
|
|
});
|
|
tr.appendChild(th);
|
|
} else {
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
var valueIndex = config.fields.indexOf("Value");
|
|
var footprintIndex = config.fields.indexOf("Footprint");
|
|
columns.forEach((column) => {
|
|
if (column === placeHolderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
th = createColumnHeader(
|
|
checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
|
|
tr.appendChild(th);
|
|
}
|
|
} else if (column === "References") {
|
|
tr.appendChild(createColumnHeader("References", "references", (a, b) => {
|
|
var i = 0;
|
|
while (i < a.length && i < b.length) {
|
|
if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
|
|
i++;
|
|
}
|
|
return a.length - b.length;
|
|
}));
|
|
} else if (column === "Value") {
|
|
tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
|
|
var ra = a[0][1], rb = b[0][1];
|
|
return valueCompare(
|
|
pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
|
|
pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
|
|
}));
|
|
return;
|
|
} else if (column === "Footprint") {
|
|
tr.appendChild(createColumnHeader(
|
|
"Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
|
|
return a.length - b.length;
|
|
}));
|
|
} else {
|
|
// Other fields
|
|
var i = config.fields.indexOf(column);
|
|
if (i < 0)
|
|
return;
|
|
tr.appendChild(createColumnHeader(
|
|
column, `field${i + 1}`, stringFieldCompareClosure(i)));
|
|
}
|
|
});
|
|
}
|
|
bomhead.appendChild(tr);
|
|
}
|
|
|
|
function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
|
|
const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/;
|
|
while (bom.firstChild) {
|
|
bom.removeChild(bom.firstChild);
|
|
}
|
|
highlightHandlers = [];
|
|
footprintIndexToHandler = {};
|
|
netsToHandler = {};
|
|
currentHighlightedRowId = null;
|
|
var first = true;
|
|
if (settings.bommode == "netlist") {
|
|
bomtable = pcbdata.nets.slice();
|
|
} else {
|
|
switch (settings.canvaslayout) {
|
|
case 'F':
|
|
bomtable = pcbdata.bom.F.slice();
|
|
break;
|
|
case 'FB':
|
|
bomtable = pcbdata.bom.both.slice();
|
|
break;
|
|
case 'B':
|
|
bomtable = pcbdata.bom.B.slice();
|
|
break;
|
|
}
|
|
if (settings.bommode == "ungrouped") {
|
|
// expand bom table
|
|
expandedTable = []
|
|
for (var bomentry of bomtable) {
|
|
for (var ref of bomentry) {
|
|
expandedTable.push([ref]);
|
|
}
|
|
}
|
|
bomtable = expandedTable;
|
|
}
|
|
}
|
|
if (bomSortFunction) {
|
|
bomtable = bomtable.sort(bomSortFunction);
|
|
}
|
|
for (var i in bomtable) {
|
|
var bomentry = bomtable[i];
|
|
if (filter && !entryMatches(bomentry)) {
|
|
continue;
|
|
}
|
|
var references = null;
|
|
var netname = null;
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
var rownum = +i + 1;
|
|
tr.id = "bomrow" + rownum;
|
|
td.textContent = rownum;
|
|
tr.appendChild(td);
|
|
if (settings.bommode == "netlist") {
|
|
netname = bomentry;
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(netname ? netname : "<no net>");
|
|
tr.appendChild(td);
|
|
} else {
|
|
if (reflookup) {
|
|
references = findRefInEntry(bomentry);
|
|
if (references.length == 0) {
|
|
continue;
|
|
}
|
|
} else {
|
|
references = bomentry;
|
|
}
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
columns.forEach((column) => {
|
|
if (column === placeholderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
if (checkbox) {
|
|
td = document.createElement("TD");
|
|
var input = document.createElement("input");
|
|
input.type = "checkbox";
|
|
input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
|
|
setBomCheckboxState(checkbox, input, references);
|
|
if (input.checked && settings.markWhenChecked == checkbox) {
|
|
tr.classList.add("checked");
|
|
}
|
|
td.appendChild(input);
|
|
tr.appendChild(td);
|
|
}
|
|
}
|
|
} else if (column === "References") {
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
|
|
tr.appendChild(td);
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
// Quantity
|
|
td = document.createElement("TD");
|
|
td.textContent = references.length;
|
|
tr.appendChild(td);
|
|
} else {
|
|
// All the other fields
|
|
var field_index = config.fields.indexOf(column)
|
|
if (field_index < 0)
|
|
return;
|
|
var valueSet = new Set();
|
|
references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
|
|
td = document.createElement("TD");
|
|
var output = new Array();
|
|
for (let item of valueSet) {
|
|
const visible = highlightFilter(item);
|
|
if (typeof item === 'string' && item.match(urlRegex)) {
|
|
output.push(`<a href="${item}" target="_blank">${visible}</a>`);
|
|
} else {
|
|
output.push(visible);
|
|
}
|
|
}
|
|
td.innerHTML = output.join(", ");
|
|
tr.appendChild(td);
|
|
}
|
|
});
|
|
}
|
|
bom.appendChild(tr);
|
|
var handler = createRowHighlightHandler(tr.id, references, netname);
|
|
tr.onmousemove = handler;
|
|
highlightHandlers.push({
|
|
id: tr.id,
|
|
handler: handler,
|
|
});
|
|
if (references !== null) {
|
|
for (var refIndex of references.map(r => r[1])) {
|
|
footprintIndexToHandler[refIndex] = handler;
|
|
}
|
|
}
|
|
if (netname !== null) {
|
|
netsToHandler[netname] = handler;
|
|
}
|
|
if ((filter || reflookup) && first) {
|
|
handler();
|
|
first = false;
|
|
}
|
|
}
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
|
|
filter: filter,
|
|
reflookup: reflookup,
|
|
checkboxes: settings.checkboxes,
|
|
bommode: settings.bommode,
|
|
});
|
|
}
|
|
|
|
function highlightPreviousRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[0].id == currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
for (var i = 0; i < highlightHandlers.length - 1; i++) {
|
|
if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function highlightNextRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
for (var i = 1; i < highlightHandlers.length; i++) {
|
|
if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function populateBomTable() {
|
|
populateBomHeader();
|
|
populateBomBody();
|
|
setBomHandlers();
|
|
resizableGrid(bomhead);
|
|
}
|
|
|
|
function footprintsClicked(footprintIndexes) {
|
|
var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
|
|
for (var i = 1; i <= footprintIndexes.length; i++) {
|
|
var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
|
|
if (refIndex in footprintIndexToHandler) {
|
|
lastClicked = refIndex;
|
|
footprintIndexToHandler[refIndex]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function netClicked(net) {
|
|
if (net in netsToHandler) {
|
|
netsToHandler[net]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
} else {
|
|
clearHighlightedFootprints();
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
}
|
|
}
|
|
|
|
function updateFilter(input) {
|
|
filter = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function updateRefLookup(input) {
|
|
reflookup = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function changeCanvasLayout(layout) {
|
|
document.getElementById("fl-btn").classList.remove("depressed");
|
|
document.getElementById("fb-btn").classList.remove("depressed");
|
|
document.getElementById("bl-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'F':
|
|
document.getElementById("fl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(1);
|
|
}
|
|
break;
|
|
case 'B':
|
|
document.getElementById("bl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(0);
|
|
}
|
|
break;
|
|
default:
|
|
document.getElementById("fb-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.setSizes([50, 50]);
|
|
}
|
|
}
|
|
settings.canvaslayout = layout;
|
|
writeStorage("canvaslayout", layout);
|
|
resizeAll();
|
|
changeBomMode(settings.bommode);
|
|
}
|
|
|
|
function populateMetadata() {
|
|
document.getElementById("title").innerHTML = pcbdata.metadata.title;
|
|
document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
|
|
document.getElementById("company").innerHTML = pcbdata.metadata.company;
|
|
document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
|
|
if (pcbdata.metadata.title != "") {
|
|
document.title = pcbdata.metadata.title + " BOM";
|
|
}
|
|
// Calculate board stats
|
|
var fp_f = 0,
|
|
fp_b = 0,
|
|
pads_f = 0,
|
|
pads_b = 0,
|
|
pads_th = 0;
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.bom.skipped.includes(i)) continue;
|
|
var mod = pcbdata.footprints[i];
|
|
if (mod.layer == "F") {
|
|
fp_f++;
|
|
} else {
|
|
fp_b++;
|
|
}
|
|
for (var pad of mod.pads) {
|
|
if (pad.type == "th") {
|
|
pads_th++;
|
|
} else {
|
|
if (pad.layers.includes("F")) {
|
|
pads_f++;
|
|
}
|
|
if (pad.layers.includes("B")) {
|
|
pads_b++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById("stats-components-front").innerHTML = fp_f;
|
|
document.getElementById("stats-components-back").innerHTML = fp_b;
|
|
document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
|
|
document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
|
|
document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
|
|
document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
|
|
document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
|
|
document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
|
|
document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
|
|
document.getElementById("stats-th-pads").innerHTML = pads_th;
|
|
// Update version string
|
|
document.getElementById("github-link").innerHTML = "InteractiveHtmlBom " +
|
|
/^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
|
|
}
|
|
|
|
function changeBomLayout(layout) {
|
|
document.getElementById("bom-btn").classList.remove("depressed");
|
|
document.getElementById("lr-btn").classList.remove("depressed");
|
|
document.getElementById("tb-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'bom-only':
|
|
document.getElementById("bom-btn").classList.add("depressed");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
document.getElementById("frontcanvas").style.display = "none";
|
|
document.getElementById("backcanvas").style.display = "none";
|
|
document.getElementById("bot").style.height = "";
|
|
break;
|
|
case 'top-bottom':
|
|
document.getElementById("tb-btn").classList.add("depressed");
|
|
document.getElementById("frontcanvas").style.display = "";
|
|
document.getElementById("backcanvas").style.display = "";
|
|
document.getElementById("bot").style.height = "calc(100% - 80px)";
|
|
document.getElementById("bomdiv").classList.remove("split-horizontal");
|
|
document.getElementById("canvasdiv").classList.remove("split-horizontal");
|
|
document.getElementById("frontcanvas").classList.add("split-horizontal");
|
|
document.getElementById("backcanvas").classList.add("split-horizontal");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
|
|
sizes: [50, 50],
|
|
onDragEnd: resizeAll,
|
|
direction: "vertical",
|
|
gutterSize: 5
|
|
});
|
|
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
|
|
sizes: [50, 50],
|
|
gutterSize: 5,
|
|
onDragEnd: resizeAll
|
|
});
|
|
break;
|
|
case 'left-right':
|
|
document.getElementById("lr-btn").classList.add("depressed");
|
|
document.getElementById("frontcanvas").style.display = "";
|
|
document.getElementById("backcanvas").style.display = "";
|
|
document.getElementById("bot").style.height = "calc(100% - 80px)";
|
|
document.getElementById("bomdiv").classList.add("split-horizontal");
|
|
document.getElementById("canvasdiv").classList.add("split-horizontal");
|
|
document.getElementById("frontcanvas").classList.remove("split-horizontal");
|
|
document.getElementById("backcanvas").classList.remove("split-horizontal");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
|
|
sizes: [50, 50],
|
|
onDragEnd: resizeAll,
|
|
gutterSize: 5
|
|
});
|
|
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
|
|
sizes: [50, 50],
|
|
gutterSize: 5,
|
|
direction: "vertical",
|
|
onDragEnd: resizeAll
|
|
});
|
|
}
|
|
settings.bomlayout = layout;
|
|
writeStorage("bomlayout", layout);
|
|
changeCanvasLayout(settings.canvaslayout);
|
|
}
|
|
|
|
function changeBomMode(mode) {
|
|
document.getElementById("bom-grouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-netlist-btn").classList.remove("depressed");
|
|
var chkbxs = document.getElementsByClassName("visibility_checkbox");
|
|
|
|
switch (mode) {
|
|
case 'grouped':
|
|
document.getElementById("bom-grouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'ungrouped':
|
|
document.getElementById("bom-ungrouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'netlist':
|
|
document.getElementById("bom-netlist-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = true;
|
|
}
|
|
}
|
|
|
|
writeStorage("bommode", mode);
|
|
if (mode != settings.bommode) {
|
|
settings.bommode = mode;
|
|
bomSortFunction = null;
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
clearHighlightedFootprints();
|
|
}
|
|
populateBomTable();
|
|
}
|
|
|
|
function focusFilterField() {
|
|
focusInputField(document.getElementById("filter"));
|
|
}
|
|
|
|
function focusRefLookupField() {
|
|
focusInputField(document.getElementById("reflookup"));
|
|
}
|
|
|
|
function toggleBomCheckbox(bomrowid, checkboxnum) {
|
|
if (!bomrowid || checkboxnum > settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
|
|
checkbox.checked = !checkbox.checked;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function checkBomCheckbox(bomrowid, checkboxname) {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = true;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function setBomCheckboxes(value) {
|
|
writeStorage("bomCheckboxes", value);
|
|
settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
|
|
prepCheckboxes();
|
|
populateMarkWhenCheckedOptions();
|
|
setMarkWhenChecked(settings.markWhenChecked);
|
|
}
|
|
|
|
function setMarkWhenChecked(value) {
|
|
writeStorage("markWhenChecked", value);
|
|
settings.markWhenChecked = value;
|
|
markedFootprints.clear();
|
|
for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
|
|
markedFootprints.add(ref);
|
|
}
|
|
populateBomTable();
|
|
drawHighlights();
|
|
}
|
|
|
|
function prepCheckboxes() {
|
|
var table = document.getElementById("checkbox-stats");
|
|
while (table.childElementCount > 1) {
|
|
table.removeChild(table.lastChild);
|
|
}
|
|
if (settings.checkboxes.length) {
|
|
table.style.display = "";
|
|
} else {
|
|
table.style.display = "none";
|
|
}
|
|
for (var checkbox of settings.checkboxes) {
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
td.innerHTML = checkbox;
|
|
tr.appendChild(td);
|
|
td = document.createElement("TD");
|
|
td.id = "checkbox-stats-" + checkbox;
|
|
var progressbar = document.createElement("div");
|
|
progressbar.classList.add("bar");
|
|
td.appendChild(progressbar);
|
|
var text = document.createElement("div");
|
|
text.classList.add("text");
|
|
td.appendChild(text);
|
|
tr.appendChild(td);
|
|
table.appendChild(tr);
|
|
updateCheckboxStats(checkbox);
|
|
}
|
|
}
|
|
|
|
function populateMarkWhenCheckedOptions() {
|
|
var container = document.getElementById("markWhenCheckedContainer");
|
|
|
|
if (settings.checkboxes.length == 0) {
|
|
container.parentElement.style.display = "none";
|
|
return;
|
|
}
|
|
|
|
container.innerHTML = '';
|
|
container.parentElement.style.display = "inline-block";
|
|
|
|
function createOption(name, displayName) {
|
|
var id = "markWhenChecked-" + name;
|
|
|
|
var div = document.createElement("div");
|
|
div.classList.add("radio-container");
|
|
|
|
var input = document.createElement("input");
|
|
input.type = "radio";
|
|
input.name = "markWhenChecked";
|
|
input.value = name;
|
|
input.id = id;
|
|
input.onchange = () => setMarkWhenChecked(name);
|
|
div.appendChild(input);
|
|
|
|
// Preserve the selected element when the checkboxes change
|
|
if (name == settings.markWhenChecked) {
|
|
input.checked = true;
|
|
}
|
|
|
|
var label = document.createElement("label");
|
|
label.innerHTML = displayName;
|
|
label.htmlFor = id;
|
|
div.appendChild(label);
|
|
|
|
container.appendChild(div);
|
|
}
|
|
createOption("", "None");
|
|
for (var checkbox of settings.checkboxes) {
|
|
createOption(checkbox, checkbox);
|
|
}
|
|
}
|
|
|
|
function updateCheckboxStats(checkbox) {
|
|
var checked = getStoredCheckboxRefs(checkbox).size;
|
|
var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
|
|
var percent = checked * 100.0 / total;
|
|
var td = document.getElementById("checkbox-stats-" + checkbox);
|
|
td.firstChild.style.width = percent + "%";
|
|
td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
|
|
}
|
|
|
|
function constrain(number, min, max){
|
|
return Math.min(Math.max(parseInt(number), min), max);
|
|
}
|
|
|
|
document.onkeydown = function (e) {
|
|
switch (e.key) {
|
|
case "n":
|
|
if (document.activeElement.type == "text") {
|
|
return;
|
|
}
|
|
if (currentHighlightedRowId !== null) {
|
|
checkBomCheckbox(currentHighlightedRowId, "placed");
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
}
|
|
break;
|
|
case "ArrowUp":
|
|
highlightPreviousRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowDown":
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowLeft":
|
|
case "ArrowRight":
|
|
if (document.activeElement.type != "text"){
|
|
e.preventDefault();
|
|
let boardRotationElement = document.getElementById("boardRotation")
|
|
settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5
|
|
if (e.key == "ArrowLeft"){
|
|
settings.boardRotation += 3; // 15 degrees
|
|
}
|
|
else{
|
|
settings.boardRotation -= 3;
|
|
}
|
|
settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
|
|
boardRotationElement.value = settings.boardRotation
|
|
setBoardRotation(settings.boardRotation);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.altKey) {
|
|
switch (e.key) {
|
|
case "f":
|
|
focusFilterField();
|
|
e.preventDefault();
|
|
break;
|
|
case "r":
|
|
focusRefLookupField();
|
|
e.preventDefault();
|
|
break;
|
|
case "z":
|
|
changeBomLayout("bom-only");
|
|
e.preventDefault();
|
|
break;
|
|
case "x":
|
|
changeBomLayout("left-right");
|
|
e.preventDefault();
|
|
break;
|
|
case "c":
|
|
changeBomLayout("top-bottom");
|
|
e.preventDefault();
|
|
break;
|
|
case "v":
|
|
changeCanvasLayout("F");
|
|
e.preventDefault();
|
|
break;
|
|
case "b":
|
|
changeCanvasLayout("FB");
|
|
e.preventDefault();
|
|
break;
|
|
case "n":
|
|
changeCanvasLayout("B");
|
|
e.preventDefault();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.key >= '1' && e.key <= '9') {
|
|
toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
}
|
|
|
|
function hideNetlistButton() {
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
|
|
document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
|
|
document.getElementById("bom-netlist-btn").style.display = "none";
|
|
}
|
|
|
|
window.onload = function (e) {
|
|
initUtils();
|
|
initRender();
|
|
initStorage();
|
|
initDefaults();
|
|
cleanGutters();
|
|
populateMetadata();
|
|
dbgdiv = document.getElementById("dbg");
|
|
bom = document.getElementById("bombody");
|
|
bomhead = document.getElementById("bomhead");
|
|
filter = "";
|
|
reflookup = "";
|
|
if (!("nets" in pcbdata)) {
|
|
hideNetlistButton();
|
|
}
|
|
initDone = true;
|
|
setBomCheckboxes(document.getElementById("bomCheckboxes").value);
|
|
// Triggers render
|
|
changeBomLayout(settings.bomlayout);
|
|
|
|
// Users may leave fullscreen without touching the checkbox. Uncheck.
|
|
document.addEventListener('fullscreenchange', () => {
|
|
if (!document.fullscreenElement)
|
|
document.getElementById('fullscreenCheckbox').checked = false;
|
|
});
|
|
}
|
|
|
|
window.onresize = resizeAll;
|
|
window.matchMedia("print").addListener(resizeAll);
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="topmostdiv" class="topmostdiv">
|
|
<div id="top">
|
|
<div style="float: right; height: 100%;">
|
|
<div class="hideonprint menu" style="float: right; top: 8px;">
|
|
<button class="menubtn"></button>
|
|
<div class="menu-content">
|
|
<label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
|
|
<input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
|
|
Dark mode
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
|
|
Full Screen
|
|
</label>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
|
|
Fab layer
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
|
|
Silkscreen
|
|
</label>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
|
|
References
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
|
|
Values
|
|
</label>
|
|
<div id="tracksAndZonesCheckboxes">
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
|
|
Tracks
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
|
|
Zones
|
|
</label>
|
|
</div>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
|
|
Pads
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
|
|
DNP outlined
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="highlightpin1Checkbox" type="checkbox" onchange="setHighlightPin1(this.checked)">
|
|
Highlight first pin
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
|
|
Continuous redraw on drag
|
|
</label>
|
|
<label class="menu-label">
|
|
<span>Board rotation</span>
|
|
<span style="float: right"><span id="rotationDegree">0</span>°</span>
|
|
<input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)">
|
|
Offset back rotation
|
|
</label>
|
|
<label class="menu-label">
|
|
<div style="margin-left: 5px">Bom checkboxes</div>
|
|
<input id="bomCheckboxes" class="menu-textbox" type=text
|
|
oninput="setBomCheckboxes(this.value)">
|
|
</label>
|
|
<label class="menu-label">
|
|
<div style="margin-left: 5px">Mark when checked</div>
|
|
<div id="markWhenCheckedContainer"></div>
|
|
</label>
|
|
<label class="menu-label">
|
|
<span class="shameless-plug">
|
|
<span>Created using</span>
|
|
<a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
|
|
<a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a>
|
|
</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="button-container hideonprint"
|
|
style="float: right; position: relative; top: 8px">
|
|
<button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
|
|
title="Front only">F
|
|
</button>
|
|
<button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
|
|
title="Front and Back">FB
|
|
</button>
|
|
<button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
|
|
title="Back only">B
|
|
</button>
|
|
</div>
|
|
<div class="button-container hideonprint"
|
|
style="float: right; position: relative; top: 8px">
|
|
<button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
|
|
title="BOM only"></button>
|
|
<button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
|
|
title="BOM left, drawings right"></button>
|
|
<button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
|
|
title="BOM top, drawings bot"></button>
|
|
</div>
|
|
<div class="button-container hideonprint"
|
|
style="float: right; position: relative; top: 8px">
|
|
<button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
|
|
title="Grouped BOM"></button>
|
|
<button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
|
|
title="Ungrouped BOM"></button>
|
|
<button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
|
|
title="Netlist"></button>
|
|
</div>
|
|
<div class="hideonprint menu" style="float: right; top: 8px;">
|
|
<button class="statsbtn"></button>
|
|
<div class="menu-content">
|
|
<table class="stats">
|
|
<tbody>
|
|
<tr>
|
|
<td width="40%">Board stats</td>
|
|
<td>Front</td>
|
|
<td>Back</td>
|
|
<td>Total</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Components</td>
|
|
<td id="stats-components-front">~</td>
|
|
<td id="stats-components-back">~</td>
|
|
<td id="stats-components-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Groups</td>
|
|
<td id="stats-groups-front">~</td>
|
|
<td id="stats-groups-back">~</td>
|
|
<td id="stats-groups-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SMD pads</td>
|
|
<td id="stats-smd-pads-front">~</td>
|
|
<td id="stats-smd-pads-back">~</td>
|
|
<td id="stats-smd-pads-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TH pads</td>
|
|
<td colspan=3 id="stats-th-pads">~</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="stats">
|
|
<col width="40%"/><col />
|
|
<tbody id="checkbox-stats">
|
|
<tr>
|
|
<td colspan=2 style="border-top: 0">Checkboxes</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="hideonprint menu" style="float: right; top: 8px;">
|
|
<button class="iobtn"></button>
|
|
<div class="menu-content">
|
|
<div class="menu-label menu-label-top">
|
|
<div style="margin-left: 5px;">Save board image</div>
|
|
<div class="flexbox">
|
|
<input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
|
|
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
|
|
<span>X</span>
|
|
<input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
|
|
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
|
|
</div>
|
|
<label>
|
|
<input id="render-save-transparent" type="checkbox">
|
|
Transparent background
|
|
</label>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveImage('F')">Front</button>
|
|
<button class="savebtn" onclick="saveImage('B')">Back</button>
|
|
</div>
|
|
</div>
|
|
<div class="menu-label">
|
|
<span style="margin-left: 5px;">Config and checkbox state</span>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveSettings()">Export</button>
|
|
<button class="savebtn" onclick="loadSettings()">Import</button>
|
|
</div>
|
|
</div>
|
|
<div class="menu-label">
|
|
<span style="margin-left: 5px;">Save bom table as</span>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveBomTable('csv')">csv</button>
|
|
<button class="savebtn" onclick="saveBomTable('txt')">txt</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="fileinfodiv" style="overflow: auto;">
|
|
<table class="fileinfo">
|
|
<tbody>
|
|
<tr>
|
|
<td id="title" class="title" style="width: 70%">
|
|
Title
|
|
</td>
|
|
<td id="revision" class="title" style="width: 30%">
|
|
Revision
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td id="company">
|
|
Company
|
|
</td>
|
|
<td id="filedate">
|
|
Date
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div id="bot" class="split" style="height: calc(100% - 80px)">
|
|
<div id="bomdiv" class="split split-horizontal">
|
|
<div style="width: 100%">
|
|
<input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
|
|
oninput="updateRefLookup(this.value)">
|
|
<input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
|
|
oninput="updateFilter(this.value)">
|
|
<div class="button-container hideonprint" style="float: left; margin: 0;">
|
|
<button id="copy" title="Copy bom table to clipboard"
|
|
onclick="saveBomTable('clipboard')"></button>
|
|
</div>
|
|
</div>
|
|
<div id="dbg"></div>
|
|
<table class="bom" id="bomtable">
|
|
<thead id="bomhead">
|
|
</thead>
|
|
<tbody id="bombody">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="canvasdiv" class="split split-horizontal">
|
|
<div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
|
|
<div style="position: relative; width: 100%; height: 100%;">
|
|
<canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
|
|
<canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
|
|
<canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
|
|
<canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
|
|
</div>
|
|
</div>
|
|
<div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
|
|
<div style="position: relative; width: 100%; height: 100%;">
|
|
<canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
|
|
<canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
|
|
<canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
|
|
<canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|