tag:blogger.com,1999:blog-15586551602353906772024-03-18T21:18:01.651-07:00Home Automation, Robotics and other Fun StuffAndrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-1558655160235390677.post-65058700908598929362023-05-27T04:06:00.007-07:002023-05-27T04:09:19.652-07:00Shopify - Multiple product discount using permalinks without an app<p>Sometimes you want to be able to add a "buy X and save" button to automatically add more than one item to the cart and add a discount. This can't be done using the built-in features so needs something custom. There are a few apps that can do it, but they each have a recurring monthly fee.</p><p>Shopify <a href="https://help.shopify.com/en/manual/products/details/cart-permalink" target="_blank">permalinks</a> offer a way to perform multiple checkout actions on redirect to a URL, including adding to cart multiple items and even adding a discount code.</p><p>Here is an example of how to achieve buying 3 of the same item and applying an already created discount code:</p><p><br /></p><p>1. Create a custom liquid segment in the right place for you</p><p><br /></p><p>2. Add the code below, ensuring the URL and the product ID is correct (this can be found by inspecting the HTML of your site add-to-cart button)</p><p>```</p><div style="text-align: left;"><span style="font-family: courier;"><div style="max-width:440px;"><br /> <div style="width:50%; float: left"><br /> <label>Buy 3 save $90!</label><br /> <br /><br /> <label><s>{{product.price | money }}</s> {{product.price | minus: 3000.0 | money}} each</label><br /> </div><br /> <div style="float: right;"><br /> <button class="button button--half-width button--secondary" onclick="window.location.href='http://shopify-store.com/cart/12345678:3?discount=BUY-THREE';"><br /> Add to cart<br /> </button><br /> </div><br /></div><br /><br /><br /><br /></span></div><p>```</p><p><br /></p><p>Done!</p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgHPDmILMflgTEGlYSL2dsFGbTLoNc8oQ2mnUIG5_UqwQxhetzZSn9of6g2SfDMwXlVTsAUkb0Zu2aDR3rYxTXtT4I9eTfdDOmteyh85O_NULQfQRShOoyehCPjGrx8qa3KYNQl-6pWgpYbBFuQ2BN_Jqw-FtbONme2MPzL9LNjyU5QkCIz1z88Q-98JQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="518" data-original-width="930" height="178" src="https://blogger.googleusercontent.com/img/a/AVvXsEgHPDmILMflgTEGlYSL2dsFGbTLoNc8oQ2mnUIG5_UqwQxhetzZSn9of6g2SfDMwXlVTsAUkb0Zu2aDR3rYxTXtT4I9eTfdDOmteyh85O_NULQfQRShOoyehCPjGrx8qa3KYNQl-6pWgpYbBFuQ2BN_Jqw-FtbONme2MPzL9LNjyU5QkCIz1z88Q-98JQ" width="320" /></a></div><br /><br /><p></p>Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-3728119156045123102023-05-19T20:29:00.002-07:002023-05-19T20:29:30.650-07:00Shopify - Add a custom Google font without editing the theme code<p>Most of the guides online showing you how to add a custom font, say a Google font, by editing the theme liquid files. This can be a bad idea because come upgrade time you may find yourself trying to remember all the little changes you made to the theme files over time that are no longer compatible with the upgraded theme.</p><p><br /></p><p>Here is how you can add a custom font without editing the theme code directly, rather using the "custom liquid" block within your sites page:</p><p><br /></p><h2 style="text-align: left;">Steps</h2><p>1. Edit the theme you want to modify</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgXTFOjR1CuzjJcE5wMZ74zKGXFq91zZPIVs4EbCoclO7HHdLrzZOPfiuYvUWmIp1K0-f3FMYMhRn23vdFrHql78gjn1y2QRHMxRkhRezmAS7XjaguE5YiWMhE-pNi14G1hbUfuzLB617RTzjLcOyiS4qS647TPzfe1EWvl87BlS6gsxLbKoJz1H5cUJg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="334" data-original-width="1514" height="142" src="https://blogger.googleusercontent.com/img/a/AVvXsEgXTFOjR1CuzjJcE5wMZ74zKGXFq91zZPIVs4EbCoclO7HHdLrzZOPfiuYvUWmIp1K0-f3FMYMhRn23vdFrHql78gjn1y2QRHMxRkhRezmAS7XjaguE5YiWMhE-pNi14G1hbUfuzLB617RTzjLcOyiS4qS647TPzfe1EWvl87BlS6gsxLbKoJz1H5cUJg=w640-h142" width="640" /></a></div><br /><br /><p></p><p>2. Add a custom liquid block</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhR_WpBe2XZ5zf-pJNiEXiTy8p8GAOxueCwPcDqR7T65oAkeFUH41ZVnXtgBIZ9Byin68Num_WB3S_KBFjNjf8niK3XxAxAybtgNEA2Jh6QfddME98ohBySirCR0NOYAMzN66hfcvtg-pMi5i-tGRYNa_s9m_aFmzlUSv-sY8G6Mkl3aMJQGgQACEsDXw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1298" data-original-width="2704" height="308" src="https://blogger.googleusercontent.com/img/a/AVvXsEhR_WpBe2XZ5zf-pJNiEXiTy8p8GAOxueCwPcDqR7T65oAkeFUH41ZVnXtgBIZ9Byin68Num_WB3S_KBFjNjf8niK3XxAxAybtgNEA2Jh6QfddME98ohBySirCR0NOYAMzN66hfcvtg-pMi5i-tGRYNa_s9m_aFmzlUSv-sY8G6Mkl3aMJQGgQACEsDXw=w640-h308" width="640" /></a></div><br /><br /><p></p><p>3. Insert the following code in to that custom liquid block, making the changes required for your desired font:</p><div style="text-align: left;"><span style="font-family: courier;"><script><br /></span><span style="font-family: courier;"> var link = document.createElement('link');<br /></span><span style="font-family: courier;"> link.setAttribute('rel', 'stylesheet');<br /></span><span style="font-family: courier;"> link.setAttribute('type', 'text/css');<br /></span><span style="font-family: courier;"> link.setAttribute('href', 'https://fonts.googleapis.com/css?family=Sofia');<br /></span><span style="font-family: courier;"> document.head.appendChild(link);<br /></span><span style="font-family: courier;"></script></span></div><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg_RlmYTemtLHNP0k5-BlTWKP9x09aZlVvfDQChzNBZqulK3jrymHlEOj2pJtHGt87uZMNTE3HnVEY5jbizi5_XRyHQaz7CPSaN2EBLRTvngKxkA8Ua4Yu2YNajseNl3o4jtJSvmLwsGezDvKXxQWqpVSPVh8X0EGV3H2VGMEGau52kW7PD8nX7kxd9hg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1298" data-original-width="2704" height="308" src="https://blogger.googleusercontent.com/img/a/AVvXsEg_RlmYTemtLHNP0k5-BlTWKP9x09aZlVvfDQChzNBZqulK3jrymHlEOj2pJtHGt87uZMNTE3HnVEY5jbizi5_XRyHQaz7CPSaN2EBLRTvngKxkA8Ua4Yu2YNajseNl3o4jtJSvmLwsGezDvKXxQWqpVSPVh8X0EGV3H2VGMEGau52kW7PD8nX7kxd9hg=w640-h308" width="640" /></a></div><br /><br /><p></p><p>4. Optionally override a single block element CSS to modify the text you want to change</p><p>Note: You may need to work out what html/css element is being used to display the text element you want to change, which in this case is a <span style="font-family: courier;"><h2></span> element:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEihVDM2-jVVyvBHtCcl-sXEhxo5EFO8tqz8-7GHhL10qrmbsWKsmhp85w2tEM1V-DhMp4k5GK7G0y_y6Fot9KP2pf9tFUPfYgQ-K7QMuEyEDXu-3tlJf8SiaPx4U5FtxyRjZCQRmRI_oPk-gMTOSC6wBkoVcQC0pOPvJSnB3o1RGCXU5i_XWSL_CK-xfQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1362" data-original-width="2704" height="322" src="https://blogger.googleusercontent.com/img/a/AVvXsEihVDM2-jVVyvBHtCcl-sXEhxo5EFO8tqz8-7GHhL10qrmbsWKsmhp85w2tEM1V-DhMp4k5GK7G0y_y6Fot9KP2pf9tFUPfYgQ-K7QMuEyEDXu-3tlJf8SiaPx4U5FtxyRjZCQRmRI_oPk-gMTOSC6wBkoVcQC0pOPvJSnB3o1RGCXU5i_XWSL_CK-xfQ=w640-h322" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">5. Modify the element CSS overriding the html element we found above:</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">eg: </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: courier;">h2 {</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: courier;"> font-family: "Sofia", sans-serif;</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: courier;"> font-size: 1.2em;</span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: courier;">}</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Final output can be seen below, the "Browse our latest products" now has a new custom font:</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHDWdzetYyIfuI6I0lPYYkFkI1Yg3dmimimw8IzBo8GEXIBGsQ_oW9CBQ_L1khhcw06PUCzjglxrNzaKGycETcNM8xgcXE8qBgQ7U79hLFgtjpay4Z_JJTklIvBa8Gstjig6S5KRxzyqHevIPnyJcbuZoQtERtT6brd1xlRgdz2jTMR-YdKEC5fUU7Rw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="1470" data-original-width="2704" height="347" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHDWdzetYyIfuI6I0lPYYkFkI1Yg3dmimimw8IzBo8GEXIBGsQ_oW9CBQ_L1khhcw06PUCzjglxrNzaKGycETcNM8xgcXE8qBgQ7U79hLFgtjpay4Z_JJTklIvBa8Gstjig6S5KRxzyqHevIPnyJcbuZoQtERtT6brd1xlRgdz2jTMR-YdKEC5fUU7Rw=w640-h347" width="640" /></a></div><br /><br /></div><br /><br /><p></p>Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-26358503383899544882020-07-09T23:13:00.000-07:002020-07-09T23:13:02.155-07:00Puppet training VM, Virtualbox, Mac setup and config<a href="https://www.youtube.com/playlist?list=PLV86BgbREluVslX1cl2X1DQ8sc-uRwNad"><span style="color: blue;">Youtube video tutorials</span></a><br />
<a href="https://www.youtube.com/watch?v=xRju7qCr13I&list=PLV86BgbREluU45I9kxKr5fiSXQLte4uhs&index=1"><span style="color: blue;">Youtube Puppet training</span></a><br />
<br />
<a href="https://pe-education-vms.s3.amazonaws.com/learning/learning_puppet_vm-6.10.zip">Puppet 6.10 VM download</a><br />
<br />
<br />
Couldn't get VM to receive request on port 80/443 so did port redirect based on <a href="https://aeria.gitbooks.io/puppet-quest-guide/troubleshooting.html">this article</a><br />
<img alt="" height="113" src="data:image/png;base64,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" width="640" /><br />
<br />
When the VM booted the HTTP port didn't seem to show the quest guide as expected, instead it showed the nginx default boot screen "Welcome to nginx".<br />
<br />
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlYAAAECCAYAAAA8UpljAAAgAElEQVR4AezdB5hkRdUGYDFjFkwYfjGBWcAAiiIqGQSRKElykqgkARXMoIAIsiAgQYJkkQwqOeecw8IGdheWJS1hQ/3PW1jL3Tu3e2Z2e5me2VPP09M93ffWrfrOqXO+OnVu3VelKIFAIBAIBAKBQCAQCAQCHUHgVR2pJSoJBAKBQCAQCAQCgUAgEEhBrEIJAoFAIBAIBAKBQCAQ6BACQaw6BGRUEwgEAoFAIBAIBAKBQBCr0IFAIBAIBAKBQCAQCAQ6hEAQqw4BGdUEAoFAIBAIBAKBQCAQxCp0IBAIBAKBQCAQCAQCgQ4hEMSqQ0BGNYFAIBAIBAKBQCAQCASxCh0IBAKBQCAQCAQCgUCgQwgEseoQkFFNIBAIBAKBQCAQCAQCQaxCBwKBQCAQCAQCgUAgEOgQAkGsOgRkVBMIBAKBQCAQCAQCgUAQq9CBQCAQCAQCgUAgEAgEOoRAEKsOARnVBAKBQCAQCAQCgUAgEMQqdCAQCAQCgUAgEAgEAoEOIRDEqkNARjWBQCAQCAQCgUAgEAgEsQodCAQCgUAgEAgEAoFAoEMIBLHqEJBRTSAQCAQCgUAgEAgEAkGsQgcCgUAgEAgEAoFAIBDoEAJBrDoEZFQTCAQCgUAgEAgEAoFAEKvQgUAgEAgEAoFAIBAIBDqEQBCrDgEZ1QQCgUAgEAgEAoFAIBDEKnQgEAgEAoFAIBAIBAKBDiEQxKpDQEY1gUAgEAgEAoFAIBAIBLEKHQgEAoFAIBAIBAKBQKBDCASx6hCQUU0gEAgEAoFAIBAIBAJBrEIHAoFAIBAIBAKBQCAQ6BACQaw6BGS7al588cU0YsSIdNNNN/d4jRw5Mvk9SiAQCPREYPLkyenBBx9Mt9xyS4+x88ADD6Rnn32250nxTSAQCAQCA4jAgBGrKVOmpPHjx6dHHnmk8TVx4sQ0derUHtD4zm+tznvyySeTupvKCy+8kEaNGtXjXKTnsccea7xeUz39/W7cuHHpgAMOSMsuu2yP14EHHpjGjh3b3yrj+EBgtkDgqaeeSj//+c/Td7/73R5jZ7fddku33377oMWBLWN3TK7q9mz06NFJ36MEAoHA4ENgwIgVo3HooYemddZZp/F12WWXZQJVh/S5555Lfmt13gknnJCeeOKJ+mmZbN11113pRz/6UY9z11tvvbTPPvvMssjRww8/nDbZZJP0qle9qsfL9w899FCP9sYX3YsA4v7MM8+kMWPG9Hg9/fTTacrkZmLfvT3q3paZlCy99NJpzjnn7DF2llhiiXTJJZd0b+N7aZlo3L777ps22mijHjZp2223TaecckovNcTPgUAg0I0IDBixev7559Omm26aXv3qVze+fv3rXzdGckSXfvnLXzaeo64f/vCHedmgDrbltr///e/pve99b49z3/rWt6bVV1+9fkrH/g9i1TEou6IiEYadd945vf3tb+/x2m677dJDDwZR7pSghjKxEkEXxaZHdTv4f//3f+mnP/1pp2CMegKBQOAVRGDAiJUwuCjRRz7ykR4zUZGdtdZaK+dW1LG46aab8m9N0R/fLb744umss86qn5ZEurbffvv0zne+s8f1Pvaxj6Xf//73Pc7p1BdBrDqFZHfU8/Dwh9M222yT5phjjh6vjTfaON13333d0dAh0IqhTKxefOHFtMoqq2RiVbdnH/7wh/MS6BAQYXQhEJjtEBgwYgXpf/3rX2mxxRbrQXQYmc9+9rPp1ltv7SGQs88+O/9WN0Tl/w996EPpz3/+c4/zLN184xvfSG9605t6XG+RRRZJZ5xxRo9zOvVFEKtOIdkd9QwfPjxtvfXWPfSIDm644YbpvnuDWHVKUo8//nj6/ve/nydExm71tfzyy6crr7yyU5d6xesRRV977bXTO97xjh66ZLL3u9/97hVvU1wwEAgEZh6BASVWt912WzYshRRV39/2treliy++OMlDKEXoXF6W36rHVj+/8Y1vTDvuuON0dwvJiZG0XpYBq8f7zEDfc8895TIdfw9i1XFIB7TCIFavHPzIx7XXXpsnYaeddlqqvq666qrGfMpXrnUzdyV923jjjRuj6PPNN1+O6M/cFeLsQCAQGAgEBpRYTZgwIe2www4tSdIxxxwz3Z0x7pTZfffdWx5fCNO6666b7r///ml4yueS8P7mN7+5x7mSYtdff/3GRPlpFaSU7xh0azeSdP1116eLLrooXXfddYmT9X3THYzl/E4QK/WLuqnr5ptvTldffXVCTOWc9Xb90o7y7s5J+JjtX3rppbk+2CKunSraS75uGLB8687Hdhgh0I7RN7fWSwxvdXdnuzaqx51Wd955Z7r8ssuz3H22pDRp0qR2p/b5t04TK7i4mcP2AeR68UUXZ8xMBjjfgSgFx5tuvCndcMMN+c4146idDOvtdKw7f++444503bXXZZmQQ3WyVD/nlfhfuyY+OzHr5jXXXJPuvffejP+M6NvMtJdsRT7nmmuuHnbpU5/6VHLHcJRAIBAYfAgMKLFiyGxD8P73v7+HYUGSJKlLFC6FgRc6LwSq1ftSSy2V/vOf/5TTEiJx8MEHN95ZJJfht7/97bRj6x+QgzPPPDP94he/yMn2cr9WWGGF5I4k7z/4wQ/y97/5zW8y0WraV2dmiBXi9I9//CPtuuuu+c5C119ppZXScsstl1ZeeeWMhzsLLX8iSUhF3UH435KKu4wQWbPkNVZfIyfOwkp9yOhWW22V9tprr+xIWzlQ9Vg23WWXXXq8zj///ExgrrjiirT33ntnXOSQrLjiimmDDTbIGDqmSuA42nPOOSftueee+cYDbfFCdmF+991390ouOGoRx/333z9JHneu5SN3k3n57KaGH//4x+m4447LUY46RnW5N/1PF4844ojcr4UWWqhRDz/3uc+lzTbbbDps3IjRlPdHt0RgbBuQZbLGGlmudAtm7nzdYostUjvdampnq+/0mS42yc44RGgfffTR9M9//jPrGxy1w1YHxp0cRfLT7nYFAXOcbRIsjcJfVJgu+N/35513Xtppp53yTQDV9rhLrrq8V62repzPxgXiVoptWIxzeNaPPf300/PEBJGyxObGGe0xjlZbbbWM/9/+9rc8USr10VOTl3pd5X/6ZnLVVNiMX/3qV43nOs/do4g+DOaee+4euvSZz3wmR+eb6o7vAoFAoLsRGFBiBRoOR+5TE0myDYLZbimM41e+8pXGY6vny8/661//Wk7L0Y8tt9wyveENb+hx7te//vWk3npBLDgaRlhC/Lve9a4e51avOc888+Q7C48++ui8J02VmPSXWBUipF0/+fFPcp+bku6r1//4xz+eHeDhhx+eo1ilP4iepRQk5Wtf+1rOUZF0XT23fH7d616XPvjBD2Ynevxxx2eSVCcgZvdm2U13xHGaSMCqq66a5Lq99rWvnXad17zmNRlDRM4t8pwg0oSAfec738nLtKUd3t0l9e53vzsTMhGvKhkrfdM2RBIRcMv6Rz/60UYZl3rl53zpS1/KpIFD1Ib+lGuuuTYTBMvNpc6m97e85S3T4eMOL8nupWi3yJyJA/1rilhU663qlmjZjEZ8OPLLL798urYVOSKEltCRQOOxqU36RX7HH398xr30p7zTecRs2LBhaZlllmkcM/SAXJdccsnkblzL+qUN3j//+c9PlyNpUuTuOMv41eN8RvZE+UqhC4suumgmKvVj6eSRRx6ZydQHPvCBRvl94QtfyP0XZVWQOiTvy1/+cl6uq9dJ39wdqs+lkK1oMCLZ1Ga6gNSJUJKHcQmPqrx9hgNbEiUQCAQGHwIDTqxuufmWHGGoGxb/I1GW8BTOxEzvPe95Tw8jVD+XoeIkigOyczOHyqjXjzVbNSutFsZR1IUBZBzr57T7f8EFF8ykTmSnlP4QK87JPlzumJRUz/m0u179N9EBuScKUnXhhRfmuyibHGX93PI/4oCcIkmcBjxK4XRa7ck1//zz5+hjO+KB1HFytr4QXZp33nl77Z9oHQyrBU6iefvtt18mjK3IYulTeXec9on8uTmiP8uDdOLb3/52r+0t1yrvIhJIp2L55/rrr8//90cm6lpggQWy40dIZ6S4NlJb2lV9R9yRc4S4+n3TZxicfdbZ0y0LkoelatFfhOP1r399r/U01a0NyHYpomP0pGkciDgh+qWMGzsu623Ttd19DL+ma1a/c31R20K6jcV999k3k0Rkv3qsz8iYSBdsYYAwtYpCIZEmEXJHFbrnbuQmm8aO2JMvSiAQCAw+BAacWFkK2mOPPXoYLEaLQxKN4NgRFWSpbtha/W9fKuc498Ybb2xcBmSARV/Miktx/KOPjknf+9738gy5Wj/D6g4ey4deTSF8xzOe7l4shKQ/xIpz0md1NxnyanuaPhdixcjrt6hf03G+U387QiL/zHILZ1FKO2LV6jpN33O+IgBNv9W/++QnP5mXliZPevlGBjJDzkRz6seLrPgeaXvf+97XeCeoczjwarSh9LHV+8wSK/qADIq0NN2dqk3Iv8hhvU/lf3qHdFdl0qq99e/bEatSf1/eyc2ScnVJUHRHNIzettOp3uqfVcSqt+tWf7c8KFqtGEciYcZV000zxoilW5MzW7pccMEFOdpXx0D0VlTw4GEHTyOkJn5/+tOfGidvJoKWiaMEAoHA4ENgwIkVZ3P4YYcnzrBq3MpnS3rIRqv9q1qRD0sNlsBEbWzrUOqrvnO+1dkx8XFYZqD19nB2jpdvIg/ES9RDdKzeBrNrO7yPf/yl/I++EiuOzxKV5aG6YdZuRtzsFin5xCc+kSMMlhY4sxKNK8RKP/StKeLGyOsLwuLFWbdaapSjJMJSon+9EStYcLyiMU03C1Tx9xnBcKzrNy3VluPlAJUd9bWFE5f/U34v74jvV7/61Rw1cI68qi9+8YuNbfE9R1j61tvwleO35pprJktJrfDSd7+TS3mJ/pkUkMmJJ57Yo83aru9kJWlZtEKEpVVEyzKbHMJC3Htrd/m9L8RKNM916VQ7+cFevpKCfCCMxkOTDOkyXCwzI7te9K8+buAwK4mVMawdlvWbtjgoOkRecrVKgbMoIWLU1D/yttRrnBgvTcQYwaeLVUJM7w455JBM/su1y/vCCy+cJ2elDfEeCAQCgweBASdWoPr3v/+dl72KUam+/+xnP8s5S/KN6rlYDDYnwBnUiYjk4mOPPTbfafbHP/6x0Zmpr5pfxdB59pg9ZApRKW3hFOSfIHmlmLFLxK2TMOfIy5Kgq/SVWMmfkbNRrll9Z6wZdjlfjuMkn3ryqZwD4vEXHBXCZHnEnWUwZeSrdZTPHAHyKPGX00DmJEo3OQ3nWG4TWVTaESvnI5qS+iVdl5yuct36OwIqf8UymSgOUlHNy6oeL7m93MgggiA/qfp7+SzSyMEV0kGm5NAqN89STOlb7mCbP2TvDkM3AcC5XLP6DnNLOHJzygu+HlskqoE0V48vnxFlRBh51GbJ+HBpwkPkBHGvOuk2zZ72UztiheTQYzomX0398pVa6cQ3v/nNaQn5ls1gXPpSf0dm5BzJp6Q/8iYRl6YI0KwiVvqB0Lnh4yc/+UlOWNeuut3QdoTYuK4XNz6QUxMhNOHRx3rf/e/axld9CZecjzrqqDx26+cZO9UbcOptif8DgUCgexHoCmLF4XAidePif0tZolWcDnJTPUa0Q1I6gsRIVn+TK2JrBomk7riq/lY+M3aSiEvh1CR/Nxlbd0hxqtXCedsWoCmyIJ/DHWRKX4mVCBuHVdpXfVefpS/OUYSgFJ8ZaLlo7iRaY401ciQBYUC2qnWUz4imdpeijv/+9785MbkcU31HIpAVpR2xsiTizkRLItokh6mVXNUvh0ukQ66J5HSERJ5W9drlM/JY8mnkqKyw/AqNx7kbq57obisJuT+lruq7/J1Sb8Gj3TuskKR2G4QiRY6rvmAictrklLXHHXcIYynOhQ1H3hQBEbUqEaNyTm/v7YgVYoDUI6+WXMnE2PHIlabrm7jQR8U2GZYnq7hWP9OBsn2Gfqlb3mPTuJlVxMrynqVx16ab7srT5qY2+A65rBfniUw1jSs2o5VsjYtzzz13unGrbvXR+aa7ohHwwfwcxDp28X8gMDsh0BXEitGVMFo1xuWzndk5JASqPns342Xc3V5dN06OtVyBrAirl/qq7+42qt6ubd8gEbLqMeWzJTZ3FZ100knTvUTF6qTOOZbryjYOfSVWblG3ZFCuWX2X0/LII4+01E1kgsNHIix/ctT1qBvjb3mHg2HUq8V5okLVa5bPkuglwSvtiNXWW2093V1aIhmt5KruU089dVpkSd1k5WaCct3q+4YbbDhtJ34RI8t41d/LZ7e412VEbm5EKMdU30XKLPH1p8zIPlb07K+H/LWxDe4Ac6ddibKVtnD+dKhJv0STjIv+lHbESrTwsMMOm64NIrL2UrIEXcXMZ8f/5S9/yZen34hv/Rj/Iwh1OdM9GDaRmllFrJA7/S9FGxDgpvGGIFnybyoIIbLZKkeujoH+WO4ryfDVOslbPmXddqnDBKvchFI9Jz4HAoFA9yPQFcSKwTNzqxsl/5sdIjtNSy/yXESRLDFYvqufz6jL0WpacrBkddBBB01HMMzQWyV7yzmxRFByRMq7/KQ6gdEObbMcpvSFWEn+tdTQFB1geEW/zLbblRIhEfloitIhm+5i4tTqBTGzq30dwyIDzlFpR6zkkCB3pWgPp9JEDNRbf4zQ3XfdnZegmtogYlgSijn0pqiB82BVZFPeya3pzivH2z6gkMbS7t7eZ4RYiT61ukmDo25qA50QgWsiIPKAYNuf0o5YiXYioNWCDIi0NOVaiSyWR0dZ4rIE2yQ346l+1+1AECvjoV7ovGXxpnZb1msq2k5vTTaazqt+J0XBpM/4byqIlSXUpja489IEKEogEAgMPgS6glilqSkvIXEWVcPkszv3JKLXIxTyFjgDeSaiLT7Xz7WM4u7A+vf+Zxg5rWrhuFvlwDTV0e47JMbmoUpfiJU8n1a5YJKZ622ttrv+Gflp6jcsOQyRuXpBghC7ppwa5yF2nEp/iJVryOVqtQdYnVh5eDFy1oRrIVbIpfyqpnY2ndfbdxLd3cHZnzIjxAr5aBU1oyfysOoFEfJ9E37Ioj2Q+lP6S6wQO3dC9kasLNW7i60Ja0tno0ZOr2/dQqxgh3w3LeG1IlbOcUeq1IRWy9YFB8n8orCtJkSIlSc41FMcnG/5UL5nlEAgEBh8CHQHsfpfJKRVtEi0QcSoGCzvIkKO5ywYLrt11+/0ESlpmg06307cHEK1yCNqImjV6/bns2UtpS/Eql1Ew7KPu9f6WuSNSdKttxUZQbhabTFga4VWSxyH/vXQjHV/iZXk3KblFm2rEyubPbZ6xFEhVnKVRAHqfZvR/yW194e0ksGMECtOUk5fUzv1rZrrV+RMr5H9JmIlMmcH8P6U/hIrER3ErunmjGrEyjhqdXOAJelqPp/2dhOxcldsU5S4HbHSB1shLPq1RRvlWWTsTtDqBqZ1WSFWlvua9g5zE0R/cv/qdcf/gUAgMHAIdA2xYnzbJcAWY1XeOWt3FjHSitway3Ll997eRT3qBKNdxMrdUhLDkbm+vDjLslTTF2LVLmIlcf3MM6aPrrVTGZEf2wLUMRB5ksTbKmIlX6zJyfjOMhFH0F9iZffophwSbWsiVq32KivECjmwpFbPtyt91b++yKccQ28k2fen9Easmhyi79xpV9pZfW8XsZKgXp9UOFcOn+T//pT+EivHW47qjVi5y89yZrVP5bPl8OrysPZ2E7EykTIuSnvLeztixVbJzxQ1LMc3vUvwP+XkU3LOY5OcRImR0qZ6llt2ucYl+6Z64rtAIBDoLgS6hliJRNjNucmxNxktxkiEaeqUl+6Qk2clCbjp2Pp3Ilscvhl5tcixEsmqH+9/RMWdc0hLX15mquU2/r4QK/2XiN90bfsbSSzm6PpS3N3YtDu6XDDLrXVHp07LPvLRmq4v6lc2KxxoYqWt7XKsEEBt7IuMHOMuuKbE4nY4tyNWCGATsUJmbdfRhK87/OhWvZDJWWee1ZhjJVfOHaz9KbOKWBk3+t3UN1tvXHLxJdM1czATKzbDhMlEq6m/9e/khtpzrUwAq0AgVmwD7BC56svEr3qXaPW8+BwIBALdjUDXECtGRsRI1Klpu4OqwUK+OBZ3TZWCLFgyqx7X6rNz7fNUL+3ujHOXjjt4eiM3nKEZvBA/o6n0hVjpv4cRN0Un9MPt/RxYq1IeXyPCgdCJ/NTv5oIrUilvpk4qtdEsvAkzuJbHcHQDsSKHVnd6Ii9lv6tWWPnervz6RFbVvcnanVN+g5XcoSas3D2qznpxh518s6ZzLKuVHLbqefIHd9t1t8bkf7mAJhP9KbOKWMG7le7Y6NSeUO6mMza0wThz52bTTQ2z6q7ApuR12PU3YmVbE9u7SExvkmX9O8u4lrf1v6nAxJhi+6ov9qw3W9NUX3wXCAQCA49A1xArUHBYltuakkmrBgv5KInhBUIzQnlFTYm21XN9XnfdddNtt07/fED1SEo97tjmBG5OQDKq2SenPHnyy8/Ps0TmXMTH8pYkZblMksFLv5oiSNri+xJBarePlWicx1/YcqEYXGSMYYabHb1tKsiByItxxxanVu+7/zlB0ZqSVItYcHStEvfhxegr3UCskFbPG2zqG5xEcmAqEgUjpWDFqVveEvWylYfIQLs8mHxy7Y86WuWCiWScd+55eS8v10Rgn5zwZI4+uAOs1Y7tG2+0cY50lcgGudrotSkHqGwH0JSXVWvqdP/OKmL1xPgnckS16e5YMkJePD/Pnb+2ypD47aaBpiW4biZWoo7y5NxRXNc9RKvpKQel/7atqG/oSj9Mgoxf+lp9ybmsPjJoOkHGP4FAINDVCHQVsUJYPCqmN2IlqoVk1ItdyZu2XagbQZtnco71YmNE+Taf/vSnW26h4DmAcrtEhtxGLinZkuQxxxyTNttss2l5XtXHYjCcfSFWjrOpaStyyMkiRTYO1E75Gfa+srGjBH+4lUfaIICIZlMukmNhgMjZrkIESPJ/HSf/I5S2pSjLEt1ArOS42N+pFUkhP7tri+ggH2QEK1FKOmJX/IKxvCd96k9BRPfcs3nnd5iRteija9pGAcF284E7A1vlIsmZIkekmEwcj8g3ycTEQv/6G2mbVcTKxALG7m7rbew29af6XbcSq+efez7vydZ0B5/IsH295JMZL00Rd9sn2LqiEGf65rMoJrm7G7b6QvgdHyUQCAQGHwJdRazkGck1aSIDVePLcZalqSrk7u5qtURUzjerli8kItBURDk85obzajKQpR4OxCNZmp4V6JgZIVZmsJyqyFO7a8NHQnHTHXyFWHGiZsmtEse10Q0AfteP0q/6u/2JtKmUbiBW2oK0iB60ipKUfiBQ9oGqL4uW32eEWJGTx/w0RVxKvd7dhekYumSDSrqF3JFbK/lqqy0AWrVXf8lYNKu/ZVYRK+0QXbEZrD3jWvWtik2rz91IrER2PVGgae80dkBEzt2vlkRtLNqkF74z0TF5KkU0E9Fu2mfPnYL9veuz1BvvgUAgMLAIdBWx4rAYp1azvmKM7ZlT3TG9QGgpzl1h5bimd4a7N6eE4HG4TRsz1uts5URmhFjpB8InIjWjM/9CrNRluc8jW+ptLv9re6v2l2NETqoktFuIFWcnWteXCGW7Ps4IsYKta7d6/FDBrrwXYuU8emsLgqY77Rzfm0yQrmHDhk0X+VBvX8qsJFaiVqLA7oRrRQoLHu3eu41Y6ZclQOSpae80EytL/8YIfC2ZNxElfXYTiNzHErUKYtUXrY1jAoHBh0BXESvwuaPN3TFlqaZuhC3/yMNi8OqFoRLFaHdnodyspru2qnUheIyp5TKOu7cIWr2N/p9RYuXalnhOPvnkHLlqF01qum6VWCEflislWvfH2XEgHIl9rUQitKmUbiFW2iOvTd6SO69mlIjOKLGip/vvv3+fcK0SK06VbolGNOXqNMm0fGeTXHdu1rcJKbLp7X1WEivX1jdk3uOnWuUbkZN+b7DBBo0R1+q4USf9MzloGgfkXh3L48aOy+OuKWI0o8nrsLbEzx41EXT7TeVct/8NEVHJP/zhD42yZUfkAJbcyyBWvWls/B4IDE4Euo5YubtNHkyr/BlEx5JDY5ma8m/tohiMXn3Dwqa6EDfHiR5JvJVD0Y6wFecnhG/5zC3Z5U4gCeebb755Y+TIbNft+9WCyLjjUR6VJHSJvqJ45RpN76JrliEksZdtHtTJeGuHHDD5Yb0tnVke3H677XP+lWTbOoFtt4O4hO56X1y3KS9FH+r7WD304EOZcDT1z1Jafb8pONEXbbJVhW0L6pvENtXlO1FPkSN3efU3VwmucLGsIwm+t7tRYYrcluJckVnk2SN1eouM+n2rrbbKu3TLQ6zLpNTb23tZ0mrCRNK9LUiqpURgmqJr1WcFVs8puOibOzQRGstdZCP3zPiz071E9iaddgNF9RmIyDO9aooCuYEBkSuF3ouYNUWWWhEre8TVj0eAjGHX9gxHRLCJVNEhS4DGWCl00kOpjcUmXUTQ3DQhOd15tqNo6pvtZHbddddSbbwHAoHAIEKg64iVWa+7tE479bRsfBng6ktScLu7uPwmilE9p/rZ7y++0Lf9oMhx0ouTMjGRG2MDTYncNpWUPCxZFWHioCWbiiYgCzfccGMaO2bstLvuLC3edONNjW1yh5pZblMpRprzR5jq13b9HXfYMSf8u6tPEr0k87LUUOq01xeS5G46fZD4LwneTFzkwFYOnCAyyKlxVq2cNxKizVVMy2d3Wtb7glTCpBxTfa9HXpwrCbp6TPmsb/W7qqb1b+pL/ZOM75mG7gq02SzHhJDASR8lCfseBnL0LB0jZnCekQJneJMPAuluNzcf2Bne8y3phFwsfSh3VVavgzy7CYJsRb+ct/lmm2kb2IgAACAASURBVOd9jbSbnpGJPonMVJdkq/X09bN+ImYF0+q7pc1q/o86HQ9zJKl6rM/GWLtxqG/Io/w8cvES7SRzxIMsmgibaLVjS0EGEWp3E9bbQJ/JrxRExTg1FurHtnrQtqXu+vEnnXhSuvLKK/PSnklJva7yv0lXq0maPsjlLMdW3yWla7cxZuuTpr7JF73j9p7bdpS+xnsgEAh0LwJdR6y6F6qXljo4DM6BU+EoOA4OWn4JYtCKkMxsvzhxpKZ6bddn+C1L1clUq+s5zvIKJ2q/JQ7/nnvuyfXODMlodb2B+B4Bkcukj/pGRt5F03w/K2RUSJZIBDLpnU6QTTWi0YQH8iA64rwiE1E4sh5MMoG7O9tElJEHeFfJ4AsvvJjHzQEHHJDkUjUtsbsTsk7wmjCL7wKBQCAQ6FYEglh1q2SiXYHAIENAdMtdpraOsKXF2muvnSOFJYonn02OY6tdy+VlifTVo56DDIZobiAQCMzmCASxms0VILofCHQKAVG3el6RqJTv6t/X87zk/rmj9z//+U+nmhP1BAKBQCAwIAgEsRoQ2OOigcDQQ6CJWNUJVKv/JcPLjYto1dDTi+hRIDC7IRDEanaTePQ3EJhFCMwIsXLHpK09JPk3PQ1hFjU1qg0EAoFAYJYhEMRqlkEbFQcCsxcCbuywD5VHTtkM007l8qZsV+BhxF7+l4dlWxLPsrSVgjsjq3f3zV6oRW8DgUBgqCEQxGqoSTT6EwgMIALujnSnqlwpDzS3z5fnOkpg33PPPfNzNj2b0lYJeU+uysPMB7DZcelAIBAIBDqGQBCrjkEZFQUCgQAE7H9lSwsky1YSXjYbLZ997/cZ3T8sUA4EAoFAoJsRCGLVzdKJtgUCgUAgEAgEAoHAoEIgiNWgElc0NhAIBAKBQCAQCAS6GYEgVt0snWhbIBAIBAKBQCAQCAwqBIJYDSpxRWMDgUAgEAgEAoFAoJsRCGLVzdKJtgUCgUAgEAgEAoHAoEIgiNWgElc0NhAIBAKBQCAQCAS6GYEgVt0snWhbIBAIBAKBQCAQCAwqBIJYDSpxRWMDgUAgEAgEAoFAoJsRCGLVzdKJtgUCgUAgEAgEAoHAoEIgiNWgElc0NhAIBAKBQCAQCAS6GYEgVt0snWhbIBAIBAKBQCAQCAwqBIJYDSpxRWMDgUAgEAgEAoFAoJsRCGLVzdKJtgUCgUAgEAgEAoHAoEIgiNWgElc0NhAIBAKBQCAQCAS6GYEgVt0snWhbIBAIBAKBQCAQCAwqBIJYDSpxRWMDgUAgEAgEAoFAoJsRCGLVzdKJtgUCgUAgEAgEAoHAoEIgiNWgElc0NhAIBAKBQCAQCAS6GYEgVt0snWhbIBAIBAKBQCAQCAwqBIJYDSpxRWMDgUAgEAgEAoFAoJsRCGLVzdKJtgUCgUAgEAgEAoHAoEIgiNWgElc0NhAIBAKBQCAQCAS6GYEgVt0snWhbIBAIBAKBQCAQCAwqBIJYDSpxRWMDgUAgEAgEAoFAoJsRCGLVzdKJtgUCgUAgEAgEAoHAoEIgiNWgElc0NhAIBAKBQCAQCAS6GYGuJlZTpkxJDzzwQLrsssvSf/7zn3TbbbeliRMndjOeXde2CU9MSDfeeGO65ZZb2rYN1i+88EJ+tT1wNv3x6aefTjfffHO6++670zPPPDMoUHjxxRfT888/nyZPnjwo2tvUyKlTp6YJEyakK664Ij3yyCOhn/8DiWxfeP6FQS3bJnnPyu9gNnz48OxP/v3vf6frrruuT5cr+nfvvfcm+sgWOPf++++fKX+kLjbXGO2WwrbxF/fcc0+2c/p655135u9mtp3PPvts9uF33HFHxnCg+gz3hx9+OF177bVpxIgRs6QZA0qsrr766nTQQQelP/7xj/m13377pRNOOCErr94iUz/5yU/SSiutlJZZZpn061//Oo0aNWqWADEUKuX4b7rppjR+/Php3fE/DHfddddp3zV9uP2229MBBxyQ/va3vzX9PNt899xzz2Uyf9VVV2XDYhAqjOiOO+6Y6OhDDz3U9Xgw2KeecmoeX9dff33Xt7dVAydNmpQnBWussUY65ZRTptPtVucM9e85uBNPPDENGzYsO7yh3t9O9I8eIVM//vGP0/e+97207LLLps0337xPVSMa9A/eJilsgXP/+te/ppEjR/apjqaDHn300Vzn73//+8TudKogR1deeWW6/fbbk373p7BtMNp///2znUMm995777T99tuncePG9aeqHsc+9NDwtMcee6Tf/va3Sb0DVQQRjj/++LTZZpulf/3rX7OkGQNKrA4++OD0la98Jb373e9Ob37zm9P888+f1l133aTjmPKqq66aPvGJT+RjllxyyfTLX/5yphR5liDYRZXusMMOyas6Ezv//PPTwgsvnBZbbLG2LUVoF1hggbTEEktMI7ZtTxiiP44ePTodeuihae21184Eiy4qyMkiiyyS9bO36F83QPPkk0+mH/7wh3nscACDtSCIJlhzzTVX+t3vfpfIZ3YvIihrrbVW1sfZfSLUV10Q7Vx//fXThz70oYzb8ssvnzbccMM+nX7OOedk/dtyyy2TqNcNN9yQfdVWW22VI9h9qqThIJNetvnDH/5weuKJJxqOmLGv7rvvvkwEf/WrX/U7us62ffGLX8xY+XzNNdek1VdfPS200EI52jdjLXrpLPUtvfTSOVAiWjRQBTn+2c9+luabb748UZ4V7RhQYmVZRcSKM/+///u/9POf/zxddNFF2bETAlK1yiqrpEsvvTSHTAFSHN2sAGOw1/nlL385ffWrX01nn332tK70lVhRdPiLHpYozbRKZqMPZqNmbB/4wAdy9K/o22AjVpbMDz/88LTnnnumiy++eNBKMIhVT9GR7SGHHJJle9mll/U8IL7pgQByZHJp5cNKCV/S12jOrCJWyJ5gAXvTyRQXZGjuuefOkbn+ErYgVj1UZ4a+GFBipcXWWzfddNP0mc98JodqOfXnJj6X/vGPf2SyZRmLUxs7dmwP5XOsdVvLg0899dR0+QYGjlm7cGtRWiF0x1o/9qLYzuM883Wfe25aXVVyIXo2ZsyYfGw7lF984cU881CvWcODDz6Y211dm9aWahus8aq/XM97aadwqXZaD376qafbkkrtW3CBBfNs4+ijj85rx0K3Z5xxRp4Vff3rX891qAuhFfLNfZ/8UkRGKHrc2HHp8ccfn9ZF7fC/Y/VHfoL/zdpaFdf0cpx+6oNzfVdIinP9/vDwh/Nv+iiXjoyrWDkONvB0jHrgpV7nl/pgRg/85jgvIXoh8YJrq/ZWv2dozSI32WSTNM8886TzzjsvY+96lgZFrESySr5PaXfdeE2d8lJeEKwdAwORlnrfqtf2mTzoq6VceCF58hv0BcGY1pepKeu0OtVNniMeGZGv4fziMNRTxo3vtNM5sFKn81yjyLR6jKhItfgfDlWdKb/rL71WJ3kVudCTxx57LPentKmMS8f6veg7/SVfbaJnrqfeKrGSCmB5w7jSb3rheu2K+rNujxuX63UeuVT1R3tdr8hLO+BY5OV37YWnfnrX3tGjRud3eFaL452v70VudFEd0+Q1YkSuq8iUvB3vOHaL3Ly3KlXZqgOWT4x/IusBnXvowYdyHa7fqjjP9fSFHngZQ2TsPNf3W70ObfUq+BSMHUs2rg9LbSRvBW7ld/iSnd+LrtAPdbIDzldP9fxyDRj5TR2uQaf13XX0Be764fdiW/XH6sjnP//5HOlzvuP0j0y8q7+UgknBvx2xuvXWW7PciqxLHd7pnfGmnoJD9ffSZ20p12eD4aDv7ewnmTgGBvrKRo8b91iWnfa+853vTEsttVQeL3Cg32SgnY6955570z13v4RzdSz0lVipq7SPvMgTzqUfRV7wveuuu7LeX3DBBelb3/pWrxErfSu6om4vNoGs2QTFMbD13ct9euk47agW2MOUXmiLd0ubQzZipfN1YmWQmGGLvlgeFLX65je/mbbYYotEMNXi2DPPPDOtuOKK6Ygjjkhjxoyd9jNHI2donXXWSZdcckkWhHrla1l69DKDsUxCMOriML/73e/mPKOqMUHyNthgg7b5RwyEELH1cu0VckYWrcVzyoprIDra+973vje9613vSt/5znfSUUcdlZXSMYy09pZjDJCvfe1rOfpA2VoV11HfnHPOmb7whS/kkKtlQREoy61CuYcddliu6+1vf3tum1kvA664QeBHP/pR+ulPf5r/11bt2GWXXfIS4Qc/+MH0pS99KUe1OLemQoGFx8lqt912SyutuFImKKI/vjcQSpHzpV0IjD5+/OMfzwRbbkAZnNrw97//PS2++OJ5BgbTb3/721mG2pmd7/9I1amnnpr7DAOyNTOVh9Kb4y3t8c4ZifDo65ve9KbcX8ZptdVWS8cee2wmVvRDrtU3vvGN9I53vCN95CMfSb/5zW+mkRn10Kd99903IbPa8v73vz+H5ulfcSTV6/rs+yOPPDL94Ac/yG2A10c/+tH0ute9Llm2EFEsOslgM56iue973/syNnBZeeWVM/FjOBTtMmkRteSw6Ob3v//9dNJJJ+U6tV9fyZiRZRz/9Kc/5XrlkhVn4F1/XO+YY47JpKTafo7I2ISV3IVi2OgJrH7xi19k4+8cBu4vf/lLPpaR0xdRass0lkQs+Rn7f/jDH7Lj0OeyFEivkN5PfvKTuc9kYOwUB19tU/lc2rbddttlecJLVJd+FkegTXvttVf+nrxgwm6IBpELPaNP8kOMX8sI7AEsN1h/g3TaaaeVy2XdJf8111wz7bzzztm+PTnhyaw/6qDvognkxXZpexk32gg/+S3yP5CBVkVbjHnYwIiDt/TDnhhPn/3sZzNW8oMKqa3WZYwZG/TakpgVA/hLuWAnbrn5lryaoJ9yN6tl2223TV4iIwqbdeGFF+al5yIbkxBjiVPXR1H0jTbaKH3qU5/K44Hs9IFj1H+6wv6wA3O9c65sn+CMBGkrR15ybtlVNsU15Osg46NGjsrYSSXRD2NOX/SPb2BD3va2t+XxajmKvrF/cq2805NS2BJtpadKO2J18sknZzmLOpmUlaJPxrsxCU/kqV70jYO3rAtD58DA2IeNXDD6Qh/hTU8VOinqBl8Y+J3N1wZRav2eY445cn/pmf7KD4Of8Ug32EnjH5ZssbrV2xdiRZ/OOuus3DfjSV3wde1CRuEpp821Xec973lPHn/ayge3Wwqks5ts/NI4Zw+KTTBGkUn6QN8tUZK/Pklj4df4OT696Lxj2bVtttkmyx6n+NznPpc+/elPz17ECiAiVIgFgTCyBgsnUQhKUVCKgH0TFgGWge738887P7Nj68WPPPxIHvgMmgHJOFNoMxgCZ9AY2dNPPz07Qo6AwS+FkaeMDGWrYiZqvVxbOKCddtopG16KL/mPYTjuuOMyoULodt9996zQ2qfuAw88MA+uf/7zn7nfvhMmNkv3mQLLMSnOtd4OxxmEhVQwupwh42DQveY1r8mKx0lLxFSf9nIUiutyOAala8DSgOHc4SVyWAapfjQVREgdb3jDG6YpOedD6WFvIJSCLBqMnKWBwSm7HjJiFjbx2Yl5gJCP3DvGn9FB7t7ylrek5ZZbLhsDTs9AYjQ5FcYGUYCZQdafHBQzsAMPODCfa5BqOweHoEqcJktEBynWTiSLEUf4rrvu+mwYORGGkmGHNb0lC7MjA1oEqqkwqnTi9a9/fe6fOjlnmOsb/BliBdmEA2coD9FvrgV38mKYFCTNcY6/9ZZbszNRv77Bf7311stthydCRX6cijHH4CI82mXC4VrGWJX45ouklI0YQ4/Uc1iFQDO0ZE8nkFzF7BNu9MFxDDRcjAPjkEMpqQHIc5VY6d+8886bdYUDf+1rX5tljIy0KhwfWZVJDlnSNXplFkzPyNnYYfDJa+ONN84TOm1C/kw+YIawkMUb3/jGbDuMH+2BM5wU9ku+IjujLwgtudITxxvT9FOf1SfNAcGBkWt4wRFhd16rwsaYmBiL7CWdM6bl1bFfxrg+il6zPfXCQf35z3/O/XFtTplDR3zWXGPNbA/YSOPIBKtaHG/yeO6556ZJL07KDpXe0XmElO1bdNFF8zhBLtgg/XWMSQonR6/pFAd591135/GBVMljYufoGltGv0VUTA7e+ta3po997GPZDtB55GyFFVbI1zfu6RR9RxQQEc4TMUQqEBz2RTuMadiaePMxZZJW+sgWs5nsjdKOWBkbm26yabZR++yzT6kiY+46SAHbUfUn5SB9Z7PoBkJi/LExVfup3cYQPUPQEIU777gzX895Iug77rBjtodkQo78pbHBF+k/+3PSiSflCRVdNb4cZ7w5hx7CnS3tjVgZjyeecGKWtXEFa5MUughvEzIk8V//OiPLiz5r49Zbb511HB69ESs+iT1jJ4xXbVO//rgWv2/So//Giu+NaVjSQfqJqMOKX4epdoiWqYtOGV+zVcQKGJwTg8C5GKSEbXA1KSdDxsgwjM5xruPMzg1kxoEBJShOkdEzi8LQEaklllgyR64YeOSC4M2UqtdCjBgcBKBVYdwZBgSAk1E/pmy2x/AxsAwJMnH55Zfn/pjZajMDwbib9XkndM7R7wygtlEWjrY+eyztgc+CCy6YDQtjK7plNmhW7HsD02ekBYGgoKKBIloGtFk3w8/gGeQGiKgNwmZGqD8cu74gkU1FPepg/MwkOCWhYDgbGORJ4SdPmpzxIBftVDfMYGdwaqdrOZ5xZZi0mYMzA2W0zf7NArUHXgbVzTfdPA1Xs1Bt4ehh05eiXXSNIaJP//3vf/NyT2mfAcpwywvUPjIVVWDQ4UhnOHK6wrCTFfnRA7+rkwNoKhwzmegvAir6qc8w4uAZQBML12U4EQt66hjtE/mFMR0sxIpzJXtRHf1ab731srNDorQdsYEnzBlZuqEujs04oKtkrV5EgUFtigAas+pDXuiUc4TsGXVGW58YcseZqdIPEyfyY5zptqhwWYrmsBlVDkX/S8SKQfabdnJKHJf6fc/Y1ovvEA0G2KSo6JqI3jlnn5P74rraw86ok7zUL/rDYNPjsWPG5ug5OTsO4VSHyJ+JCJJaxiUdID9OnN6fe8652aB/f+XvZ4Kqfu2g45wf500/6Conz/FxLGXM1ftU/hfNoIsiiIcfdnjWLdEXMqXv9EIUUV/K7L2c692EFG6vfvWrM6ZkYXzRE30xHunEpz/16R7ESlvZLISDPNklkx8RBddnt8iNHRIJ5/SMCXrF9rqO/oliaZ/xxjYi4uwFjOg6faW/SDk7ZHJIdx984MGsp2TgRh2TAcTSNcjE9V2D/TERUCcSST+NHf9rp/Yja3QDqSjFsQiYSZ/SjliZKLEHxhCd5sjpHZmagGW7dPPNWfdL/eWdvnH27Jzrs58mNewZ/StpAGSs7XBmJ0wW2RK+TZTMmIW3ce+FhBoXbKSJDH0zbtl1+Gubc7yQ5uIf6Az5szfsps8m2PTZJJXOwI5fZY+MA1h7kTV7geiqk26ZsPGLw4c/nOVBH53nt3YRKxjSi+KnyZLfFghhi+BrQgI3+JK5/tMpPhphEqUUNTPpNm5Nlui0uvQfuZ+tiFVROkaJQTTDI/B2BTlxLENgvZnz/uEP18/KwBD7n6EjVI6JgVcoGsPGSYlKzQyxko9jYHO+ZmgGPSPLqMl94KQZUjMQSz6u5YW0cSwGGDJjwKiDgy7HMDgGHCNu0LQqjlFXPXnd9+o0kyiFohqsZn6MTJVYUUiDWdiUsUZsDCizlfIq9VTfC7FidDmO4uwsM3GCZKBPyK9jDS59kzRvIJslzveJ+fLMDMmEl4GaHfX/ZKb/ZlyMhoGubQYwo2NwF8xEHhgMxo6B7WshNyQAkWC0Sh8QOBiacTM2dMhv2mngIjGMFzxFDhjlk096SYawNbPjqKtRu2qbCrEqpLREQFyHg9EemNIj5FfUk86VwhnRb8SmHbEyThjsMgZgQ2f0i+HRJwaVIeLoGVl6AE86UM4r1y3vDJZzzAw5Uwad0dMmxAMRMDbd3oxo0XvtZKT1x/JXkR1HZSIEC5OQQqwQSUZRgQ/jacxpfxN51lYE1yyWHrMFdN25xoK+itJoj+PKmCMvM2WGWwSmECt1wMgYUODBuSGznLF62ReyQgztuyeKwYDrD4Kgj+pHyI0HzghWyAqnwRHlcfpyyk++Vv1PIVaIMXJo4uQ6xrVxYXyJVLE/TTLTdvJCrOisCICJmPP0j5PqC7FyvWJ3CrksbWVfT//n6Zkg6z9HXArs9dMx2o6YsMGwgRH7Y0wX5yfqpK36bRwggrmtz7+Q9ZV9YTvZc2P1maefSVMmT8kYkAs7w76IvsPEucbSzBIrOCGBJvfGiuUvdkD7TUxNqIyNptKKWNXtJ3JojMBC240htoTuGANIRbGp3tknNglWZDqtTE2ZtCIlonIidTCm/6JkxlY7YkVPjW1RIuQIpmXM6qdJkkkv/6dOctX3khelbpHI3ogVfXUeIoZIm8wYT8YL+0V3CrEybrVLIWdRSCTduGQTjF/2S9SerpXj2JKiW/nLDv/puuT10r/+ECsKYdAUUlGiGkJ+BiDjTHE4b+y9FAL82e4/ywacM6UkMxqxYrANasJC1AwOs2XOnuIT7Kte9ao8GzFIEAMvgwPBQSAIG5ngmMvv3pdacqlseAyUqjMt/SjvxcDViRWjzRFXi2NgJkSrfQya47TN4EVmkBLOxXHa6VjEpilqoW7GSh0cqkFRCmJs5g9bg9GgEblBJpEVRpdjNwNHDAwOeMkTQLqqMqsSK6TAIIYZJ1wIF8w4dE7XTJYB62vpjViZ8TIQpTB6jJxrmmkxAAiJaEtVhowOvdCepsIoiFjRH8aklEIOGBUyok9wYsi1tZS+Eiuz4SpBMivUNu0uSz4cslk6vbTsxVjCkF60KnSCkUdyTRx8JgPLUkimOkTO9M0SlSUiRId+wa9EIWFGf+CHaHB+hViJeBhnpdAxMocHQtNUXMPYYuQRbZMTTphhZqBFU5BBTrEqL+3h7NmMQqzIDjkshb7rJ5yQrscfezz3kSGnl2byDL/IBfJVrV+7kUrtMdaaxk25TtN7lViZOCKIcLR0Z6wbT4hcE+FUn8kTB21sawfbAXfLlyYUfSVW5EmnLM1XJ26lzQgRnWYbEb5qgT/bILrCNlR1YOmlls5yhcuwYQfnNpEVkkyObAebjazRCTafLYGBd7iaDOgHOc1KYoW8lOVeERPjy/hEsJEu128qrYgV3UDQShG9psPqMwaN2fXWWy/Lje4ZZwgj+4A8tCJW7BYSTdbGljbykYgI3yRK1I5Y0TMkXjqB8UQGRad9pnuIk2CIMSWIgOiV0ldidc3V12TSL0pGJ+gyH0H25FslVshhVa8sl/IFJg30Qh1sJzvNxireg1j1IWIFKMab8aLgQssMpRwjSg1Uy4CMH6WvFpEEhsEMtRArDq6/S4GEbQAwNBKGERSO3bt9kQx8RAFBMYs10KsvRo4RQgA5YApS/d3nEjqvtr/6uT/EisPhvJqIlTrNWjlag4RzQVq1ywyHo2sqsG5yEIibAWAWdfxxx2dyKKzLoSNOIgWINONQiFXBi3yQ41LqxEp0A2aMLkJWx4zzbeVcSp3V9/4SK4aTkWFQECvGhKNg+CxHVtuDWGh/U2lHrDgQM0BLHiIa5Ow6nEYpM0qs3NlmElAlVnSfPjLkll/IRHSxlYPQBr9xFAwq50JPGG7LWnCg9yXXguFDOugRYoUY0YMqVj4jBoxmK2IlWmhMcxKtotqcHh2gx2aviyy8SJ64OM85HIM2M8R1eYmEc3CtiJV+i2Ax/Ma68Uku7Mm111yb84/ITiSFszS+q320pMPmkF3TuCmybXqvEit5YqJ/7J2kX2OBvtATBLlqy0pd7JXrGnvkJZKqD17GKj0VsfI/nKtFW+mMukXqEDM4NhErkTnLhOyz5eJq0QaTJuOFrrG7VXx8tsxjmVvdSDaHaHJD5uo1eUWS2XXHwhtZQDgQOsezP+pCIpsiVvo/o0uBxqDJj+i0NiECNuZFACzrVicC1b773FdiRbaiPDBiJ7zonaVXSfaINNuMfLCjjcRqasqkGSaOpyvGJsz4KL6pN2JFDsYkYqUOUee6vOgz32VMGRf9JVawpCvGEDIpsmZcWdLjg3ojViY6+giXQqxMdNkvdSvwC2LVB2IFLOBz1gaPAce4IDrAFJI3S2bELYMY0AqHi4Q5HtmRy0QIEtxKwqfzRVc4FwOwVTFT4FzM3M1AGR2D2GzAMhHnQHkpZAldlrrMQlxPiJsRNlPmeEo7HacdDGRVUcv55d3MxWzNgCmFgWQIXbda2hEr1+WQXNO7mYolN+SB0lr/byqtiFUxDGSA5DIIonI/3eXl2Yb1fs4VzoxxwYvBtsQAI68T/nFC7qPvOV3tQqzMtqsETPu0B14GkndRDbrgWlVsq31xjJwLsyMzJ+cqZSmwHrGqEyvOSN8M3LqzVxfy1VT81ipiVSVWHL3ZIQPOiMLEudpN/5EWeCtNOVYMVjViVSdWcBGxQAwRYTl/JiX6BW860VR8zznRXQ69hONFFS0fIFrC+CVC6Tp+Q0pNgnIktlK1PtF3kZUmYuV6SHqJXpTxWm2bYzhkvyER9IjhRXKMc4QLoUJCRDfq+gNb8mpHrOiSfE76gkgy/LArDtUSiTHDyVajXaWd7AbdnFFiZcnJ+eyOvrIt+oXEigLp1+jRL09MynXhW8Y4HeB4TEzYT/qFZJpsajuSXQqZiAKYFLFxIqjkZ7kXUagWfTM+1ZmJ+8UvJ8GTf5ELnUUa2K2yzKoe8jOGyYBu+Z8cXYeDZ9MQPw6enjgW7kgHh19IuxWLOrHSf4RMdJEOqLdcc++99s5EhYNX9BOW/IJr8Ct8hihhmdzQZcfTJbZI5NZEqIls5kpnkFjRSXLTfvi6LvkY6wiuCClbBU+Th9IvWBvL6uKDjAAAIABJREFUxhudKOOF3UDa+kKsylIgYkX+bGm1aJv+8qPIMnJLLqVol7HXbinQ+QgqvUPQ6LbCzsK1P8TK2ETOLF3yrWWCoU6TB9eQfjMryoAuBVIQRoDR1UkzxBJR4jQY4r7kWAEGiARmzVzob/vttp+m1Oo0k+QgRJQwb7MnM0Ys2AA1GxKhoZCMP2fAEAuvEo5wfjtideF/L8yDHXEwQ1I/BeZgzKBEQjg+A3TPPfbMs0CKSjnNGhiKkvSH7SMZnKhjtBceDI+B0Kogcq7B0CCQ2mFG2l9iRbkNVmFfGAg9I4tIhaigtjUVRse1GFIzWYSMEeJcGCLGl5wYLngyREL5QsSW/pAlxIoRhJfQsoFkGcHyEsJFV8jIsYyo+h3HUcrRYCy1VZ0l54pRVp+7sWDkN21tKton34eB9A5//VAvveiNWHEkZo8Mj1khI689jApDS45NhaHsC7Eif0nh5ECvzOhgxwnSe4ZzZogVWdNb49HSF3z1m/MzXtpF/zhFM0VGlcOiA5wigmnsWG4wcVC/ggxYQqILorwcGF3nLMosVXsKsSI7S4h+dyzyQK9ajUvtkQMEHzJXF3mYTNEXxpbN4ZBMSrQXwSAv7+TlmHbECkFwDAev3/Jq2IziUNkVREUyNLJNjxAs495x2mcSNaPESvs5HXZNm/XRC9mDtaW9YlOreuealivhqL9kdOkll+bIIntovJU7jTlrY0CiuHPYNGPZub7j1Omd6LLjjDVkxgSKDePgEW6rCeyJPZTYS0SOjSIPdtHYYgsRJ4SF3OEDM+OGPVK//vidTaenCE6RVemLOowRtsj5dWKFpBknCDGiqJ3a5joISMmThJl+9kasEAgrE+yGiR5SgbDSj1ZFG+kGAshGsUkmJfWlwDIxZfccoz1wgb0oE7wt8Zk0wdL4oM/sEJ8CK7ggt3yqY/WVTWJTyaYvxIrtkXYDL5Mu8qTf6qfPp5x8So6owxI5Qi5NhI09OiotwHhtR6zYBPaG7Cz9l3OlkvAN/SFWbA9bw59uucWWua033XhTxo7/GLLECqniXJEB0QzhaI6C0lPweT88b5+JFeVFwgxwZMkALQU7NyM2u/VyTcrlOIKmIIRAQTgr5EwY0xIYJaewDHErA+46BhVG7XwRD/WLmlEwg5qh5ZgoJcMk+sMgcESMlGUK12dsLdEZyPIELNXJCRF6N2Pi6FoVhqcYaAOMY2dw+0usEF5GFVacOHzcRaEe4WYzkqZSiJVBV9b9OT8YWO6BA9lyjnAw8AvOlooYOYOHUYeXQW827Hvn+2wwMF5lNmZGZjmQIWOgtE9btdt1yZohFqHjaMgSzmZXTcX3lj44SudzKogdfWpHrAzUMrOGPSLCYNEHdcCBEW1FSvtKrByHMNINRtJ1OEL9R6zgI+KkcHhw5nwZqPXWWy/3nxMlBwU5LUuBMFK3/8lDPWRKr+DmmpxdNaqQK/nfH9jRcUQJfsiRos1C+ca49laXQzlEY8y4RUbpOpkZS/qF2BZihUBb+vG7iJ02IdocTFMx7o0vzirr8W4vpwk4n6NAMNyNilzBkA2iPyJM2sCmtCNWrkufyNzEjf7CtDhUjoJxV7e+I5Kif6IkxhPd4hzLuGUT+1LKUqCxwvbAW9t33233/GJTjF9Ev5C8ar0mfssus2yWtf5yemuvtXYeY/6nLyZ79IkzQ2phbQxwVIVYqVtkAXHUd8eJsMrPNL4RLDaIDIxf8mPTjFPyNAFk04wf49OYIzO20TEmtfTXuOEn1I+g+p1uixIikb6nt9tus20+Fr50ShIz4lEnVrCAuz4hw0gae89mkxOSTM+UvhArxyEx2sD+IZmtxkmudAYjVuqEJ/018RF50Uf21stYtbxK54xDdoeOHXfscRl3Y4ZdIgcv7WU3+pJjBS/RnqOPOnpaVJpNUD+8jV82h93QRn6OjIw9dtAYoDvtiBW7RLbF5ju3+BA+sU6s4Dz8oeEF0hyRnm+++XN72COEj05pizGDvBdfQ7e1c1aUAY1YMQicTSE8jAsjxyiZZXCeBi3j15fCERt86qhHdjgIRpzyEbAX5TQozfAUhlgEpTgqxkJdjL22mNG2Kow7g0CIDIaXQWpWxrgqBM1YqctMShtcgwHRT7MeLwMZ8UKwyjEMj/4x2q0KAmGWyCGUtgvpG0DaVi1mEIyKKI8lEGTHcRyEkKlZh3aRTWkDI8ZQlzBytT6fC7Eys9J/stAOfdE/vyvu1nFdOBvkjuUU4MwgiwAoHLLrMRwiGmYtDCzj7jiD3EBk3C2JyBWo4moA+558kS/Gkjx7M3jwQEqLLBkfcoMPB3TffS8njRu4nCVnVBwYOYgaMjr6Dz8GRh9bOU6YaKM2M47TytSUw9X0FuHTX/0WUUV4GR7GRT9di06L+iiMLuOL4IiSaLu2Gk+FWIlA0Q0Y0zvjgX4am6WQG9nAnSM3u24qxi086L1rI0WliBS5jmhAVYfJGKHTTrpWxg7jR97aamyRAflyzkVnyMN4LX0p1yrvxhuiyKDSRXKgHzAw0y7kxyycIyrjxnGuo02OQ97ZJng7tl4QarYF2bBMTj7VIgpqCZLOVtuBUCLsJjJI7xabb5HzY6rntvps4mYyRmbGMmyL7sOQ7rqmazcVfTKJNbksbfJu8kZWMDVuLJXQK5irv+g1vbOHk0KH5P7BtdTlWASSHaYvyFGRg/bBE8EqukjGxmYZc45hH0RxOWrReuOp9FGb2C+TPNEY0WVjpIy30hfRG3pQlstMGOmcQk6w44Ncz7nkwAayfcaCcuUVV2b903d1qdM49T+yUYoIkIkiQqc/Rb/K7/V3hM+4Yh/ZfXWTKRmIPpaCuCOr+u8YuOu7yWZu92c/lwmoSQ0bxL4hxupmd/TLqgGfKjjAr5AnfUVIkQ1jDyFjJxAZ6S8+syUi/cZCWSrXBishSG/VR7EbfJQlSuOkei3jybWMAbqLULcqfqPPZKid5IO4sZ9sC92kE25wYDNLu9RHT+iZ8aw41hhTh3ENL/0lZzKkt7OiDCix6mSHnn/u+QyYCBQlaqXU9iryKBUh6Ex4KnkdRRCIA2VmlChRf4oBwiBxrq0ICGEzRtrgDjmPwmkqdmyW10LheyMD1fO1gcHyPrOFUexrGwqx4qA4Sw5DOwqhqrdF3xlFjrZ+DIw4LHUwFsieAcvQMwKcar04x/W0t3pdDp4RN2tBTlrpRrU+dWlTkaP/+1ucr49mVO2W0PpbLzw4RvoLF+9m/TavFGmpTyr6W/9AHA9f8uWoRNTq5KS0Sb9b6Uw5pv7OkdIj481Ymvy/xzjVjzPG/O441+l0YUvUSz6u08kCP3pB9zk1utcXnTUWSp9hxD5WizYbS8iE+tvV6Vx6LhrG9tSPVZfftY+sm0rVfj77zMvbw5RjtRF+bHPdZvjf967PbtWvX+qovjvGGLr3nnszDvU6q8e2+6xvJcJnAlDIW7tzZvY39tF4YT/1oamMHz+9DdY/x7OJ9o2bmQI7+lzGVd1H+Z3uIEqO6w8m6tI3Y70TYxE+iCzf3AqrmcGifu6QIVZmWRg8tir8HOWVR8Cg7e+SRqtWIqVmYJZizDhEekQM1W9W25+ZhhC9WaFoTn8Gd6u2DfT3lsnNKEWPLJPJITJ7lNvhzsNWEaWBbndcPxAYqgggAVJARKuq0d6h2t/oV3sEhgyxotSWoCwVmdVEeeUR6CSxEoWxrCKfSs6baIyEaKFnSxitZrxNvbZcIJ/E0shQKAimyKzkULh4t8xpSVBEoC8z9aGAQ/QhEOgWBNgYy6qWKkVFoszeCAwZYmVNm3IL9/VlqWf2Fvus6T3c5bxYy7cENjNFXcL6cr1Ep+xr5TEkcnj6GuYv17e8YEYpdD4UivC63BBLD3JX7B0jJ8P3oftDQcLRh8GGADLlpgzR8aEQFR9s+Hdbe4cMsXpu4kt73ljrjjJwCFjC8+qUcbEejhCJUHWy3oFDaOavLCIlOggXJBNx7BTeM9+6qCEQmP0Q8DBq4/CVyN+Z/dAdfD0eMsRq8EEfLQ4EAoFAIBAIBAKBoYbAbEeszPDdql7ucmkSqOUU0RFRgdk1X2XKlKn57hq3m7traKgvMZGzu2WE8t2abQnS3SjuhBpMeuBuGrNm2ze8EoVeTLtmm80QX4m2dOoaon/uSmx1Z2InrgMzjx6xbE7HogQCgcDQQWC2I1b25bARnB2Em5IMOVG70tqDw54YA50Ibx8qScmS8+sv+6wgAzNL/uxXglDITyvFkqrcJnt92OOKIxjKxXYFNh60F4s9k+y34u47e67YV6vb7rRzWz25VPeKIh/7utBduzq/EsXWCO5KdNOIPLahQMDla7rrMm8e2P9dNvoEu5sMbBxr36ImO9SnSuKgQCAQ6EoEZjti5ZEzdgS2oWPdKZGQ2SOHakt9j4MYaKNniwB3fZVdye1uXF4IgEc8zCyxcrecTdM4yFIQKY8UsCuvDStF8IZqIfOyO7atHOwebIM6D821I7ctH+xn1U3FIy1s5GdH6WqxASfdLbueV3+bFZ/pn40I3a1pg8ShkOv1j3+ckLdusUnkzI6tVpgjpMYvWYmeRwkEAoGhg0AQq5osRazsWmsGzjkNdKQCsfJoAjNbO/1WX6JZdp2dWeNvZ13b+yMQpcxOxMqGg/C1S3F5qK3lNM/oEsWyu/VA60GRS3m3KznSJ5pZLXa4t8P6nXe03tm4evzMfhYx9TBk7RkqEStyN87sIj2zY6sVvkGsWiET3wcCgx+BASNW8hcefviRvIuuuykUywgcWLmlviwr2NOI8xM9skRlViz/BQGyHGKLf0t87hwr57j1XERKfpA6LXepQ05DPWKl/gfufyAfb+lPBEN9Zed19Voms8OsyAXDa+nM8lF93yAO2XE5f+KSS/OjDezibvdZ9fTXUCNWtvX3CIGmor/IlfbCsdQPJ9/rt7vHEEb9t5Ot/jHsZsra5XExnjvnmU+w953tEjhLESsbUarfJqw2X73zzrt6bF0AY8fIX/NST7n9v8irYOB77dKGVnks+gFLx9lKQKTRYwzs2ix65nfv5KJdtnkgD3WWZUt95vjV4V1/yd/L7syuDQvEyeNFPOvKo0kc53h4ishob7nblK6oz3YH+uma5Os49WkXPdUuO+eXoi3koe5yHFl4CgCd025t8k5n9ZVe0299d80iX7LxiAvPzRJZgzXs1YPc0PsyprSH3mmjNnvQrqVuul3GivbQWcuL9NsyIowcD+9yXOlL9R3W2qz+8gQB7/oKE3UYC9rUblldn/SxjFf4eWm/F3lot3bBQ33V7TO0UT+13dikp64PF32gS0V2/q8W55GFZwKSs3rJApYK/VUXudJz5/tdf/xGP9gibaMTjlVHwU37nUf2ZOoYG7va0Nhz6XwfJRAIBIYOAgNGrDgUz97yXKSyUzrD5yHEnhFlOa4YTk7T85tEVBgxxt9DXT3ryAMvy0ONPReMw2DsfPZgTc/OQww868hjTeRNVYkV58yxek4VJ+WRJ5Y0OFpLY4gTI+hZRR4OKYJhuch1PXtITktZJnPL7VVXXpUf3mm5TqTJhnHa4Vl/EqKL0++rCiFWHrBq9/HiZKrvHMaBBxyYn6GEgOi7Aicbacongx9HB2sPw9Rfz+DytHM5VPrx+te/Pu8a7HlflsLsCea5WoiVPCPPBit9cgwcSzs4JlhZOvEgZA7fYx3M+DlMv5Or3c/JxfMTPeuKbDjTelEvYiBx3nGe7yQ6Y9d1ERqkw+/65ZlPNsskD4+6IR+ODZGhJx5vpD90R189CNgDtT0SB9HjrMmerDzRHrlyTTl48PR4HlEsRJ6c4WIJTnssz3q4rHr1F3GFv2ups/qwYeRDnXZI12d64PEzdFKUSbudI1JCp9SL7M4919xZLo6lh/ptd3VLbx76C2/ysAQowuoZfZ6phWwqnD/d8Tsnro90yrMQtUl7ERhEDcF2vr7YmNWGu75HCsikqSBknvvoiQeIBzKBZFhGlq9mqct4g2mryYF6YWA52nn6J4JI5+CEVMHU0hndgj2ZshGI8dQpLz06w15n5KftcKFvni0GW8QPoSF3dqda4Op6IsDkTK9gsdNOO+V+6z89kLtm3zCYeO6ZmxyQUXL1nDr6ADPHesZlIZLOt3RrvGm/42wmqZ0eihvEqiqN+BwIDH4EBoxYcRCIDKfOMCkjHhmRicCrX/3q/BujrXg+HOfqaeMIwj777JMf38Gh2p1bUjdDymkiE4wtA/3a17425ye98Y1vzE/VZtg4+EKsGDTOCInynZwas3fkyo7W6nA9RtHs8jWveU2+jnoYdg7aY0TMbDkejpqBtUM4cogEIDYec+DJ3HKVEKH+FE7QMp3HuyBL1ReDDccddtght4UjL5EVzshDUD3IkpF/6MGHMhHVB08Y10bt5+gZed9x5nLPOFdOqBArDtyDPDl3jkvOF+cLK2SYQ1IXhwIzMoEXQigBGNklY9dGYDxN3k7hcnNEW+oFgdGXOeaYI+PL4WqTB/PCFRbnnXdeJricEyfHubu+dvhfvQgDB0mffI94+V9f6MSwg4bliKK6kQ4OGwEnNzLncPUVAaQHHKkHEXOeyDJyisTAbs4558zREvgjEZYVOeFSkC4EVf8RD31EVGHhXC94Ie8cv+tw7G5QUB+CiySIxiB3HipKR/WJzDh90RDEGSGTcE8nycYYQ3DUbYkbQTU2JGjTE+3xgFc4wZOMkUfts+u9CUErvUVYTHpgAm9ECMlCdI0T10MYXXPDDad/EHjBxjsskY4yVl3XBEYECxkiP+SHPkn6Nl6NNZMExB351X7jDB5kqB/+X3WVVfNkSTSS7JHMarHRqqiwJXHXQwBdGyYwFMkyXry0j6zIl10y9vTVsXSc/rNDcNQ2eHjEiXFILmS58867ZDJOBmxDEKuqNOJzIDD4ERgwYsVgWWpiIDk7/4sezDPPPOlVr3pVJjAiRwoHzOmLgHC4npQ974fnzeF7G4NyUsgDo4nwWCpg4BhAx9qZmnNHAkTHCrE66KBh2VmZ/RdS1Y5YcWyeWaces3OzfpEe9SM4HCHnwNFwMtpl2cBxM0OsGHSOhnOpvkTDtKW/xMqMG7YFE+dzvGb22lxeMOTQHY+o6KM7phAd8hDRQSY5Edj4zAF7iZIgQQjIXXfelZ0Op+Q8ZFa0BAEuEbbqUILdcsstn/UAORH10iYRAMuwHD0nyCkhceohN9EGUQpRGU6O06dbCBOSKPqoD5Z9RA1EIUW36ISojz7oE50SLa0SKw9S5pD1FV6upZ/33H1PJvx0zTJUf4kVvUAU4Kp/2ufl+vrsGv5H4PQDHqJxIjiiHQhVkVe5diFWd911dx4PyJcI78RnX5KtZW8kTl9EZ2CKGCALSIB2eJGTftEL/W0qVWIFV/i5/iqrrJLHofaTD2LZRKJLnYVYmUi4G5V+ILMe5q0NfjfRImf9pZvGu8kWXUaqERyyhB0ZsgN0sFPEyligb3TGpOaoI4/KkxV3kGqrtumraC79Qiot5dIbNgdBN161X9TShCaS14sGxHsgMHQQGDBiBUIzSLNKM1tRH1ECxIHTZCQtGzHIZsBlKe3II47Ms2Oz4KpTZkxFNMz0zUAZXkuEZv+MXfrfSgZjy8gxyiJejueEGUqlHbGyNMGAKuo0IzXr5LQ5f9fn1M2qS+RIhMnSzswQKw4QRhx69WXZiNP1Hdx6i1jBmtPjSDlnZFbpLXndUiqHoJjRixByzO5I43xFtERKLOeQoRdMzPpFAzkXGMMAFhOeaL205BpIhv5wZJx1NVdFBIAMRc9EAW64/obcLn/0Z//998/RJ2Tg2muuzcQKYRDlKf0lGxEqTpcjlgMEXzpWtilACKrESjTI8Yghx1/qQpwRoxklViJ/yLp+lUK3LHeKvopyidSQm2uYXCitktfhUoiVqB6d5PirURH1i+iQh+UzfUOsRC/hoegfLETjLPGOGjkqf1//UyVWyIIIGMKrDe6qNVmiO8YqnWtVECeRNZMTx7s+4i9iJ3JJ55DKol+WUEXUkBZRaH0xphGqIhvXFtnrFLFaacWV8tihP64BQxMpJJJOaJuotKVuUSsReTK0hAlfS9ulII5xV2BBI94DgaGFwIASK4ZPaJyBEfWxJCMkL2LBYHEqwvKcA1Jjpoi0WHbgOKuFoZPrYsnQ8gdiZYaPfFRLIVaWeCzjiWhZRiilHbGyxFRm7o5DGBArTgEB4HQtgSGMpXSCWHEgw4YdnMknAlpenFh/iRVCgaxWS2/EqrrdgkiGmThSaikEueL4yEvOm+UZL7NxslxttdWyQ0GskGXOB3atCucrIoVEIDrwqxeER2QK1hxUtYhcuq7lIEu6IlaOc061iPZpo4hNX4gV502+InCISCkzS6yQGQnepZAtnaXHohl+N4lAIkUtRVaVvhArek2/jTEkpRT4I8GIqwc6w4njN4ERcSoFaRJ5QU5EaJtKlViVpUBRHeSKTugHOcp1K0v7TfUYQ/poebIU2IpI0a/Pf+7z2U4U/SILS+Sip/piadln+ValdJpYWSYuOYHGnaVVUVgTuNIu7+wZ2+NmkN132z3nwyHH1f4HsSpSivdAYOghMKDECkmxzMSgirpYimGszAhFQMzmt99+++wARZ5ElcwARXA4m3qRLGvWytn3RqxEH0RTzJLlk4jiKH0lViIM7gIqxEoSqwgNR4KIlNIJYoUotEr8rRIrEbQSFWjKsRKxmlliRQZu50eskFxRBLlTltLsh4WAVF8iIJxRX4mVyAbCivQiPlVCUDD1uygKcsR5VotopWgavZKP1IpYIRz9IVZnnHFmzhPST0SklFbEik7Do5RWOVZ1YoWU0yFRVbqOECI7oh/ys/pDrJBYOmnCgfiXQsdFvhBd9cGziVi58w5pMLHpK7ESXbRsKhKGLBnHxpj+GMMlmlTaUt6biJWbD0QDESv5giLYVd3ymX65lggnEl+im+ptIlawFcGrlr7mWFWJFQyRd4SOTtTb5X+RVxFaS7FsjDsJSwliVZCI90Bg6CEwoMSKEzVj5ggZXu/lbjM5Ib4ry3XIEqNpFm65jcOwXFMKB4c4eJ126mm9Eit5W+5ks3QiIuSOOXXMKLGyRMjZyxEz67bcZfnRLJVDqS4FSrYVfSu3yJc+NL3LOWlHrCzriCAx8ByE/xVEz2yfgy/J662I1Z577JmvoZ2lII7IqahGNWJVJVachmUsScOWVEUsqgXJk08Cm74SK47XFgZwRKBhVF3y1T8RI3cDiuhwqtVi+cmNDN7V0yliJaqFjCMJyIh+0Uftk/9UXQpEghBYul2IBJIi966evF4lVjBHVvWbXhZZ6p8JBkwKsXIDh/Ehqlst1aVAS08mD+QuV6kUZBwulvnojIhZJ4gVAk23jUsvxEjdItHGsWv4vak0ESuTEv1ErHbacadpy/DlfNewbChRn54aJ74rmF95xZU5elSWAh1XIpVVAuZmCNEvkdt2yetVYuUaxrmIniimSG61qF/bROJFcpGvKy6fPtIpkkpPyjKtaKUJHhJeXRqu1hufA4FAoPsRGFBiBR7GTuhcng4SINKi2OAQ4ZHIXo0SmKFaBuJk5P4w5pwbcmH5QSRLbkhvESuzTee508tSR8kJESFpdVdgdSmwHrGSY2UJh6FE+iwBcKwiJ5YtqsTKTNpMXN4Ih92u9EasEEGkU/QBOZRnZXnLTuJyi/pCrDgWxEi+yvXXXZ/uuP2OTAjLPlatiJVEZ5EQ/UXsJFLLZYK/KIvfRW0c01diBQtk1NIJh6pOdyhKfEYOyJzMyFc0RZtFBhBJOUV0yc0IohuWqTpFrDg7Szvka7kHcSNf9SN4VWLlN0tBlq+RG/oES5GL3oiV/BzECiGi63Kt5O8gR4hQIVZkkh32ssvl/iPqiAySV3KsOGo6WyYO6oIJMoVIcOz0rySv15cC+xuxIme67Q5NeuBaxqf/RYpEpPtDrJAk0TREGSGC4cUXXZx1QTQSsSdn8hdVE7US5XMOu0JesCjEyjmS3NkJEzhJ72UrCpj3h1jRU3pYlv3YH0vY+gxT+q4NZChiSEfoMqJZ9AEpoyeFWBkv9J5ePf7Y4+3MQvwWCAQCXYzAgBMrt3pzQIiBGWGZbSIuDLFbyhlIBloxi7XPDbLCgSITIgQchVu6ORwz8r4QK45A0rscDYaf8WPcLL80bbdQJ1YcflkKRKwYVUm1liPNnrXHS936Z5kHEbrg/Aty5AMhsWTQriBWoiStlgJFc2DoOqICIiASsREluWjTiNVDD2UngBjUc6yQIIRUu+XjwFtSugR0DqcVsULIRFU4N06eA+Tg3B7PwWuTO+8Q2EKsOHUYtCuiQZyPvrvzTXKwbStEPBApdYha+cwxaTOizGnqLydHtiJo7YiVNnPC+t9b8rpIBsKqb3AWXUV2kFfEBbG6+667c3QNwUPWyd2kAGGx7IgItiNWMEGM9VsExnkcrRwlZMA1CrG6+aabc0SSnum/fiKesCrEylhCHOCiLepyHDLgPDIxkSjbLYi8ICmlFGLV1xwrmBsT5G7supbx6frGK32qRorKdbyLlpJdNcfK9yKkCI/2w1lUmL0oOu43fTCGycQY9htiyj4Yd4VYWYpzHXoq+ii65zhYIK1VYqUP9A2GZbsFy3nFDmmbSCwijDDLJzPhEwmn+wsusGAmlK7prmA6Y+yRD7mWyUh1HysRZu11nVZLr1XM4nMgEAh0JwIDTqzcAi+qgVRVk77BJRLDSFn+Q5ZKYUhFLuRgcY4cHKdgyUtInvGWXyKZtU5IzA4ZZjkmJfHZu4R3RtvSiiUkDpEDV59cKmTDHWelHfLAEAYOBNHjABTOBeFwd5O7hhhenzlKjhlhFCFAOJCwaiJ06V/1ffvtts9RBzPfVoXxRwg5FHhwZPrhugy9ayAGvoPJmEfHTFeVtptdaxOHox4OXqQErmb6ZWkCkSKPDdYJN/xQAAAgAElEQVTfIBNEFdlp22aNHDxihRiohyNHyjgg9XMol1562bQ8sOkaUfvH9RBcjkiEiIw5QfldoleiGWb/+udaiItrc95kMGXylBz9JDOyq+dicfiW19TlePVajioJxpYxRXjowcknnZzlS6/ohjrlBErSPugvB+UtDSSWixiRBYxEU0QqYKEOEUo3XOiP6Jr+IWlIYIlYgEDeIcz0FTnWb+dqq/pEghQTAjIq/efUzz/v/LwNg7FUIqGWo0RWLJ0iVPSDzorsGHvaqz1IhS0cqsRBf5APkdWmmwi0AwGg48apaLP/YWksabuXdlviLNHo3IHaH7l6+lJf2tU+Ua6Cpz7AlE44XpTIMSY2CAybQB/kUdF/ka5CrGzgS34mYsVuwIUc6S47ZCwYa9tsvU3GRN2+k79pu4RiM0rzjSspBcaJ66pX21yD/pITTETtir1ClEWvjA+vQqLgCCuR71Z4l+vGeyAQCHQvAgNOrGYUGgaPczIj5ACK45/R+jpxHmfPeSASnAGD7C5Exlu0QgSlmi/UiWtW6+CUOUnXhU9/CzKhDufPSHFN58tV4xhKIv2M1FXOKXWSMSdVj3jA07WQI6S3/nuppxPvZEq+iL226CvnydGLplTzbLRDuyzHVb/vSzuc61oioBx5uz4h+NrR2zWMDyRAtJKezuoiKgkr7SeXGdHHehvhgEDRL/hU7wB0rGvoG/nApZ68Xo7RNuNk5IiRHRuP9JAc1EsWdZn53/fslT5ECQQCgaGLwKAlVt0oEhtkym0y8xfVMQMWHZNLYUZfN7bd2IdoU2sEJOqLbog+iOaJetqQlnztt/RKEJbWrYtf6gg0Eav6MfF/IBAIBAKdRiCIVQcRtcRnOcpu7OUlR0kuUHWJpYOXjKpeQQQsDcuNKbL17iaKbbfZ9qUIygxECV/B5s92l0KsLKma1FgCjBIIBAKBwCuBQBCrDqJsOcAyhRyNs848K29FIA/L0lpEqzoI9ABVZQkJQZYrJ9fJu//lVHViqWuAujVkL2sJErlyx6RcsyiBQCAQCLwSCASx6jDKCBQHzNlaGpLrEWXoIIA8k6s7F737P0p3IoDsyi2T6zelsiN7d7Y2WhUIBAJDBYEgVkNFktGPQCAQCAQCgUAgEBhwBIJYDbgIogGBQCAQCAQCgUAgMFQQCGI1VCQZ/QgEAoFAIBAIBAKBAUcgiNWAiyAaEAgEAoFAIBAIBAJDBYEgVkNFktGPQCAQCAQCgUAgEBhwBIJYDbgIogGBQCAQCAQCgUAgMFQQCGI1VCQZ/QgEAoFAIBAIBAKBAUcgiNWAiyAaEAgEAoFAIBAIBAJDBYEgVkNFktGPQCAQCAQCgUAgEBhwBIJYDbgIogGBQCAQCAQCgUAgMFQQCGI1VCQZ/QgEAoFAIBAIBAKBAUcgiNWAiyAaEAgEAoFAIBAIBAJDBYEgVkNFktGPQCAQCAQCgUAgEBhwBIJYDbgIogGBQCAQCAQCgUAgMFQQCGI1VCQZ/QgEAoFAIBAIBAKBAUcgiNWAiyAaEAgEAoFAIBAIBAJDBYEgVkNFktGPQCAQCAQCgUAgEBhwBIJYDbgIogGBQCAQCAQCgUAgMFQQCGLVAUm+8MIL6emnn04vvvhimjp16nSvDlQ/w1VMnjw5TZw4MT377LO5TTNcUZzYAwFynjLlJVn3+HGQfjFlypT0/PPPZ32hO1FmDgF4GnvPPfdc8nl2KpMmTco28cknn0zPPPNM8v/sWKZOSWnq1Nmx57N3nweUWL3knKYkRrzpNWXylK4nBPpw7TXXpv333z/deuutCcliSJ944olsUAZSvUaOHJlOPfXUdMQRR2QDP5BtGchrFz3z3t/S6lwyHj9+/JDClc6ef/75WV8efPDB/kI1uI+fygF2liiPHTs2HXPMMen0009Pjz766ODGpx+tZ8tvu+22dOCBB6bdd989HXzwwemee+7pRw19O7TIa0bGdd+uMHNH4ZITxk9JE5+ZkqbEPGXmwBxkZw8osbrhhhvSD3/4w/Sud72r8bX88sun6667rqshZUT+8pe/pA9/+MPpqKOOyrO03//+92m++eZL66+//oASw2uuuSattdZaaZFFFkljxozpahxnVeNEDC6++OK0995791uXyPbaa69Nv/rVr/I7MqWo8w9/+EP6xCc+kXbYYYdZ1fRXvF5kaptttkmLLrpo+u9///uKX38gL3jXXXelYcOGpdNOOy1NmDChI02544470ne+851s42666aaO1NntlYh4XnTRRWmeeeZJb3/729Pcc8+d9elf//pXx5t+yimnZPJ2/XXXd7zuma1w8qSp6ZJzn0lfX3hE2nOXx9JD9744s1XG+YMIgQElVhz/Kquskt797nenr371q2mFFVaY7rXTTjulu+++u6vh5HxFq9773vemww8/PBMrESKk8Oc///mAEqsrr7wy47vAAgukR0fPPjPmqsKIKu23335pwQUXTCeccEL1p14/W9oVcfj4xz+ejjryqGkOF8E68sgj07LLLpsJVq8VDZIDHnjggbT55punL37xi+nf//73IGl1Z5p5wQUXpCWXXDJtvfU2SaS3E0XUBkldc801k0nk7FBM4DbccMP0hje8IY+NK664IiGYoqGdLq7zjW98I/3973/vdNUzXZ+V9Osum5g2XHl0OuSP49PI4UGsZhrUQVRBVxArTo8Du+WWW6Z73X///TlHqIrnrAr79rne2mpSE7EaPXp0MkPlqGam9LlN9Yv8r429EasZrr9+vZn4v9NtqNf3+OOPp9/+9rfpYx/7WDr66KP71VLECll+z3vekw455JBpzkG+DBnfeOON6eGHH+5RZ70NPQ6ofNGfYyun9e9jTWfrJ2uD14ATq17aWdrdF8z6ckypz/vZZ5+dI7uc9SOPPFL9qc+f69ecHYmV8fC1r30tffazn82pEewjXOrY1P/vM8iVA1dfbfX0hS98IR122GGVb6f/2Inr9CmDoKa7znlqwpR0x80vpJHDJ6UXnq8d8L9m9qnu6bvU5/9mqu7m5vb52rP7gV1BrMzqrr766payMAs68cQT05ZbbplWXXXV9KMf/Sg7yaeeemraOWeeeWZey1fPVVddlcP6zmmVNCqZ0nGc7rrrrpvWXnvt9Lvf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" /><br />
<br />
<br />
Edit the nginx default.conf file to set the http root directory<br />
<br />
<span style="font-family: Menlo; font-size: 14px; font-variant-ligatures: no-common-ligatures;">vi /etc/nginx/conf.d/default.conf</span><br />
<span style="font-family: Menlo; font-size: 14px; font-variant-ligatures: no-common-ligatures;"><br /></span>
<br />
Modify the location section to look like this:<br />
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span class="s1" style="font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span class="s1" style="font-variant-ligatures: no-common-ligatures;">location / {</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span class="Apple-converted-space"> </span>root <span class="Apple-converted-space"> </span>/usr/src/puppet-quest-guide/_book;</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span class="s1" style="font-variant-ligatures: no-common-ligatures;"><span class="Apple-converted-space"> </span>index<span class="Apple-converted-space"> </span>index.html index.htm;</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span class="s1" style="font-variant-ligatures: no-common-ligatures;"> }</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span class="s2" style="background-color: #1396a3; font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-family: Times; font-size: small;">Reboot nginx</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-family: Times; font-size: small;"><br /></span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;">sudo systemctl restart nginx</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-family: Times; font-size: small;"><br /></span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<img alt="" height="472" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABCsAAAMUCAYAAACVQK2nAAAgAElEQVR4Aeydif9Vw//Hf/9Ki0q2JLJTRITsO6HNLmSJrNmypfK1VNaEZMmWrRQqUUJRJJQiWUK7tvk9nvMxt/M5n5lz9/u5597XPB73c849y5yZ55nP3PN+nfe85/+MkgiIQGoItGnTJjVlVUFFQAREQAREQAREQAREQAREoFAC/1foiTpPBESg8gQkVlSeua4oAiIgAiIgAiIgAiIgAiJQeQISKyrPXFcUgYIJSKwoGJ1OFAEREAEREAEREAEREAERSBEBiRUpulkqqghIrFAbEAEREAEREAEREAEREAERqAcCEivq4S6rjjVDQGJFzdxKVUQEREAEREAEREAEREAERCCBgMSKBDjaJQLVRkBiRbXdEZVHBERABERABERABERABESgHAQkVpSDqvIUgTIRkFhRJrDKVgREQAREQAREQAREQAREoKoISKyoqtuhwohAMgGJFcl8tFcEREAEREAEREAEREAERKA2CEisqI37qFrUCQGJFXVyo1VNERABERABERABERABEahzAhIr6rwBqPrpIiCxIl33S6UVAREQAREQAREQAREQAREojIDEisK46SwRaBYCEiuaBbsuKgIiIAIiIAIiIAIiIAIiUGECEisqDFyXE4FiCEisKIaezhUBERABERABERABERABEUgLAYkVZbpT27ZtK1POyraeCUisqOe7r7qLgAiIgAiIgAiIgAiIQP0QaCJWfPfdd+a9994Lfv7888/6oVNgTb///ntz5ZVXFni2ThOBMAGJFWE22iMCIiACIiACIiACIiACIlA7BJqIFXPmzDFPPvmk/YwcOdJcdNFFme9s//nnnytS+w8//NB89tlnFblWqS8isaLURJWfIyCxwpHQUgREQAREQAREQAREQAREoJYJNBEropXFy+LSSy+NbqrY+hNPPGFeffXVil2vlBeSWFFKmsorSkBiRZSG1kVABERABERABERABERABGqVQN5ixahRo8zHH3/ciMeIESPMN998Y3766SczdOhQKzJcffXVZsiQIWbatGmNjv3ggw/MrbfeagYNGmSeeeYZ8++//zbaz5ennnrKXHHFFeaqq66yx65cudIewxCUhx9+2JD37bffbubOndvkXDZs2rTJjB071h531113malTp2aOW7VqlXnkkUfsvjvvvNMsWLAgs2/x4sWG4ynbs88+a37//ffMvttuu82888475sYbbzRvvPGG3U6dqe/AgQPNAw88kPE6cWLF+++/b4+/9957g2XNXEArIpADAYkVOUDSISIgAiIgAiIgAiIgAiIgAqknkLdYQTyLu+++O1PxH3/80YoKmzdvNhjpF154oTX0ERjmzZtn93366af2+E8++cTcdNNNZvny5Wb16tXmoYceMuPHj8/k5Vb++usvK0ogGJAPeW/ZssXcfPPN5qWXXjJ///23mT9/vhU08P6Ip3fffdeKDv/8848VEG644QZDObdu3WpuueUW8+abb5r169ebr776yubB9RA4rrnmGjNjxgyDoPH000/bj8v74osvtsIE10M0oVwDBgwws2bNsse/8MILVpggsGacAyIHx/qEGZe/liKQCwGJFblQ0jEiIAIiIAIiIAIiIAIiIAJpJ5C3WIHIcMkll5hff/3V1v355583GOokjHQ8IqIzYUyePNngWUBC5CAWxZo1a+wHrwYEAl+KDwP5+uuvzXXXXWcFB3f8yy+/bB5//HH3NbPEm+OOO+6wokhmozGGPBAu3PVZDh8+3JbJHYcQgkcFgsrll1/uNhvEiqgw8sorr5gxY8Zk9iOo/PDDD1ZUgQPiBOKIS9dee60VWNx3LUWgEAISKwqhpnNEQAREQAREQAREQAREIB0Eli1bZogjOXPmTMPL/npOeYsVwHr00UfNxIkTrccDQzUw7EkY6fFZMBYuXGgw1EkM32AICEMtop+oUW8PNMbExQoECISFaOIGRr083L4NGzZYAQXhhGvjaYFnBnlQvui1WUdAQWxgeAhDQMiT4R4EF3UJscLVk22jR4+2Hhpuf3Tp48CQGBqdkggUQ6DcYgUdIt5F+XyqrRPlf5mhak5QLYa3zhUBERABERABERABERCBShHAez/+HF6pa+d7HV78Y+szKQYCS9RhId+8QscXJFYwBAMvB2JGELPBJZ+RPn36dENsCBJxJr744gt3uK0QwzF8KS5WcB7DQKJp0qRJVjiJbouuI4IQVwJvitmzZ9trU4ZoYmgGxg1DVRAunHCC10eSWDFhwgQbc8Plxc2hLm4YSFy0kVjhSGlZDAGJFdnprVixwnbyn3/+efaDdYQIiIAIiIAIiIAIiEBNEsA244V1PLF90aJF9kXy0qVLzR9//GEIC1ANCdsVsYKX3IQ0CNnK1VBWnrWjwko03mOpyleQWIFBj1jB56OPPsqUBbGCmBVTpkyxDeO3336zHgoMBSHh4YDXAtDJg6EUTIfqS8SmYJgFxj/xJPCWYMiIux554wXhM0g4F7GDa3D+gw8+aIi14fJwMTSIPYHnBW9gEV4QFDiGRANJEisY8sEwkSVLlthrEMQTLxP+IXyijcQK313WtnwJlFusyLc81Xg8wqbrOOnklURABERABERABERABOqPAPYaNp6z7xwB4ha6Z0WWeOT+/PPPbnezLnEKoEyIKdWceMaOMmT922+/LXmRCxIrKAXTihKXIXrzMdIx4BlOcdlll9lpT4lp4RQtls8995yNa4Hw8L///S+oYtFgEEO4hvPGoMExPAOvBbbjWeFLxJ0gTgbDQLjOsGHDMqqUy4Pt5OVmCkHYIKgm5wwePNiKKkliBddFOOF4PggnbmYRiRW+u6JtpSBQbrEi7cNA1q5da4VGfnToNFGnlURABERABERABERABOqPAPYkz4M83zLZAt4TGzdubGJkM2ECnvbNmdatW2c9KZy3ArEWEQSIF9nciedrhqdgy8OPGTQJxxAXKyruWZEEBqEA4z6aokY6Y1hCN53tUZEjmkd0Ha8I35tR8kZcyJa46cD1pdB2hoVwE3JNrowslUSg3AQkViQTRoxkzBzBcOlA6Ug1C08yM+0VAREQAREQAREQgVokwAtsPOqjRrXPyP7yyy+bvfrOoyJaVtbdS/vmKiDP1q5MvAx0/PBYQQziZX2zxawIQcEwx/sAVSWaomJFdLvWRUAESkOg3GJFaUrZPLkgYKKcIzaiQruO9aeffmqeAumqIiACIiACIiACIiACzUaAIf/ueTBpWY7hC/lWOiRWEMCyuRIOBs5b2fFD/CmHB0WojonDQEInUUACTMYTcSTGjx8f36zvIiACJSJQbrEizcNA6JfmzZtnPSmIc4PiS8dKcF15PpWoASobERABERABERABEUgJAZ7/eGkVN7id4e2Wq1atavYaMcQCcYBnWcqFgML3XEYTlKvwqRUrygVE+YqACCQTkFgR5kOwJNzQECn4ECTX/QgR5VlJBERABERABERABESgvggwkYIbuuCeC6NL32QNzUnIeVgwpLkaUiqHgVQDOJVBBOqRQLnFirQyZegHXiFR9RmFmoBJ/CAhZCiJgAiIgAiIgAiIgAjUH4FffvnFvtCKihSs8+xYbVODVptYQWtJZYDN+mvmqrEIND+BcosVaR0GgosfMXPiiW3uh6nafoziZdV3ERABERABERABERCB0hHgZRYzgPA8GPeuwAuXSRuqLVWjWOFjVBVTl/oKpm0iIALNR0BiRVP2eFMw5IMgSvEUDbQZDwgcP1bfRUAEREAEREAEREAEaocAM0MynIKhHsStYLgws1esWLGiauOZpUWsoJW4aVbdi8FyBN4sKMBm7TRh1UQE0kWg3GJFumgYGzSJKZ1crArG1bm0ZMkSG7uCAJt88BrhWHlYOEJaioAIiIAIiIAIiIAIVBOBNIkVeKYwW0nVTV1aTTdUZRGBeiIgsaKe7rbqKgIiIAIiIAIiIAIiIAL1S0CeFfV771XzFBKQWJHCm6Yii4AIiIAIiIAIiIAIiIAI5E1AYkXeyHSCCDQfAYkVzcdeVxYBERABERABERABERABEagcAYkVlWOtK4lA0QQkVhSNUBmIgAiIgAiIgAiIgAiIgAikgIDEihTcJBVRBBwBiRWOhJYiIAIiIAIiIAIiIAIiIAK1TOD/mO5PHzFQG0hHG5BYUcvdseomAiIgAiIgAiIgAiIgAiLgCPzfjjvuaPQRA7WBdLQBiRWu69JSBERABERABERABERABESglglIrJBYI7EqRW1AYkUtd8eqmwiIgAiIgAiIgAiIgAiIgCMgsSJFhqq8H9Lh/VDO+ySxwnVdWoqACIiACIiACIiACIiACNQyAYkVEivkWZGiNiCxopa7Y9VNBERABERABERABERABETAEZBYkSJDtZxv7JV3Orw2JFa4rktLERABERABERABERABERCBWiYgsUJihTwrUtQGJFbUcnesuomACIiACIiACIiACIiACDgCEitSZKjK+yEd3g/lvE8SK1zXpaUIiIAIiIAIiIAIiIAIiEAtE5BYIbFCnhUpagMSK2q5O1bdREAEREAEREAEREAEREAEHAGJFSkyVMv5xl55p8NrQ2KF67q0FAEREAEREAEREAEREAERqGUCEiskVsizIkVtQGJFLXfHqpsIiIAIiIAIiIAIiIAIiIAjILEiRYaqvB/S4f1QzvskscJ1XVqKgAiIgAiIgAiIgAiIgAjUMgGJFRIr5FmRojYgsaKWu2PVTQREQAREQAREQAREQAREwBGQWJEiQ7Wcb+yVdzq8NiRWuK5LSxEQAREQAREQAREQAREQgVomILFCYoU8K1LUBiRW1HJ3rLqJgAiIgAiIgAiIgAiIgAg4AhIrUmSoyvshHd4P5bxPEitc16WlCIiACIiACIiACIiACIhALROQWCGxQp4VKWoDEitquTtW3URABERABERABERABERABBwBiRUpMlTL+cZeeafDa0Niheu6tBQBERABERABERABERABEahlAhIrJFbIsyJFbUBiRS13x6qbCIiACIiACIiACIiACIiAIyCxIkWGqrwf0uH9UM77JLHCdV1aioAIiIAIiIAIiIAIiIAI1DIBiRUSK+RZkaI2ILGilrtj1U0EREAEREAEREAEREAERMARkFiRIkO1nG/slXc6vDYkVriuS0sREAEREAEREAEREAEREIFaJiCxQmKFPCtS1AYkVtRyd6y6iYAIiIAIiIAIiIAIiIAIOAISK1JkqMr7IR3eD+W8TxIrXNelpQiIgAiIgAiIgAiIgAiIQC0TkFghsUKeFSlqAxIrark7Vt1EQAREQAREQAREQAREQAQcAYkVKTJUy/nGXnmnw2tDYoXrurQUAREQAREQAREQAREQARGoZQISKyRWyLMiRW1AYkUtd8eqmwiIgAiIgAiIgAiIgAiIgCMgsSJFhqq8H9Lh/VDO+ySxwnVdWoqACIiACIiACIiACIiACNQyAYkVEivkWZGiNiCxopa7Y9VNBERABERABERABERABETAEZBYkSJDtZxv7JV3Orw2JFa4rktLERABERABERABERABERCBWiYgsUJihTwrUtQGJFbUcnesuomACIiACIiACIiACIiACDgCJREr1o1rYXL5rH2mhZn3QEvT9+i2pn37dLzJlseB7lM1tQGJFa7r0lIEREAEREAEREAEREAERKCWCUisSNFb9WoymlWW5hFxJFbUcnesuomACIiACIiACIiACIiACDgCEiskVmgYSIragMQK13VpKQIiIAIiIAIiIAIiIAIiUMsESipWMMxj1VMtzMKRLc1Xwxs+3/2vpfnzyRaGfRoG0jxv4+UFUTvcJVbUcnesuomACIiACIiACIiACIiACDgCJRMr1o5rYdaMbWG+GdnS9DqyrTnmoLam58FtzRUntTFz7mkpsSJFb+8lblSvuCGxwnVdWoqACIiACIiACIiACIiACNQygdKJFc+0MKvHtjDzhrUyB3duZ3Zqv6PZeacdzSnd2pqP7mglsUJihYablKANSKyo5e5YdRMBERABERABERABERABEXAEyiJWHNS5nZ3tA8Hi5EMlVshToXo9FdJ2byRWuK5LSxEQAREQAREQAREQAREQgVomUDqxgmEgzzQMAznriLbmqAPbmqMOamsGnNjGzNYwEHkVlMCrIG3CQjnKK7Gilrtj1U0EREAEREAEREAEREAERMARKJlYsW5cQwDNlY+3NO/c0sq8NriVee2GVmba7a3M8tEtDTEtCLA5/4GWpu8xba3nRTmMOeUpL4ZabgMSK1zXpaUIiIAIiIAIiIAIiIAIiEAtEyipWOEECzws3AeBgu1237gWZtmolubO83Ywe3dsJ28DeRuoDeTZBiRWVF93/MEHH5iFCxdWX8FUIhEQAREQAREQAREQARFIMYGSixVOmAgtCcL5xbCW5prT2pi9dpcXQC17AahupW/f1SRWTJgwwZxzzjnmwAMPNGeffbYZO3as2bZtW1V1h7/99pu54YYbzFFHHWW6du1qLrroIjN//vycy7hp0yZ73rRp04Ln9O7d24wePTq4v+Ad27aaTQtGmQ2vH2rWv7iH2Titt9m2+gdvdv/OvtlseLN7o8+/nw3xHrv1n+/Nxqnn2Tw3vH6I2bxwjPc4bRQBERABERABERABERCB5iRQErHi76dbmNDnn6dbmH/GNnhaWO+K/2YN+fKBVuaaU9uYzrvLw0JGfemN+lplWg1iBQb8VVddZfr06WNeeOEF88UXX5iXX37ZXHzxxeaCCy4w69evL3ufdscdd5ibbrop8TqzZs0yPXr0MEOHDjVTp041M2bMMMOHDzedO3c277zzTuK50Z0TJ040f/zxR3RTo/VyiRWb5t5u1r92sNn84ytmy68fm39nDDDrJ+5vzJYNja7Pl40f9DWIE1uWvZv5bP3jiybHbVu73Kx/saNB3Nj622yzefELZv1LnczmRc80OVYbREAEREAEREAEREAERKA5CZRErOjfs60Jfc7v2cZccGwb89BFO5glj7S0cSsQLfCw+GpES3P1qW1Mpw4Ns4e033FHk/SpVQNU9ZJYkWsbqAax4t577zUnn3yy2bp1a5O+C8P9uuuus9s///xzc9pppzU6BoFh/PjxmW1Lly61osc+++xjzjjjjEbDKRYsWGDP33fffc3l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Am+LUPwMDsa7g2tyHKLC4Ycfbt55551MPqwQxPPMM8+0+ynD1VdfHRQrEGCYCQSRhTqRN7OfuJgV5JdUp0YX/u/LtjVLrWC7edHY7bu3/mtjTviEXDf16PrXDjb/fjLInoNIseGd4xuE32dbmQ3vnWy2rV1m9xHAk8CdTH266Yu7veLw+on7bb+21kRABERABERABERABESgCghIrJBYUVGxYqeddjKdO3e2BipGKjM2sORt984771zRsqRNqKC81SJWRPsuPBK2bdtmN7399tvW4yC6n314ViSlv/76y7sbcYBZPKJDQqIHuiEj0W2+dc7/559wsEnOybY/mi+zgHDtpBSqU9I5ee3byrSsDdzdeXhV8GmSEoaRNDlWG0RABERABERABERABESgCghIrJBYUVGBABd7YhtMmjTJDh3AuGUIATM/IFi0b9++ouVJm2BRjWJFFfRjKoIIiIAIiIAIiIAIiIAIiECNEWgesaL9jubg/2JWMNOHz9U5uk2zgdROnAY8KRjnz3h/3k7z5nzz5s12aACxACRWJN9riRU11gOrOiIgAiIgAiIgAiIgAiIgAl4CFRcrCK65U/sdzQld25qPh2o2kLS92S+2vIgVxCJwQgVDBBAsiDuw3377SazI4ukjscLbj2mjCIiACIiACIiACIiACIhAjRGouFixy047mu77tzWjL2ttlo9uadaOq5xnBW/t459ije9ynR8vZyk8DkqdZ775cXxUrHBxDhArCFAosSLZq4K2JrGixnpgVUcEREAEREAEREAEREAERMBLoKJiBR4VR+zf1oy6tLVZ+mjLRsM/GOoR+qwZ28L8+lhL8/iA1tYrIyQQOOOZII583Hd3PLMBHHLIIaZnz57mmGOOMV26dLGzBLj9oSX5hPL0neOuGz0nflxSngSaxKinjJT10EMPtdM2ck48n+h3d9143u4YZlRgZobjjjvOzqSAOEAZ3f58lsSX6Natmy0fZTzssMPsDAmhMroywZzpI/GsiIsV+++/vw2y6e5dPuWpl2MlVnj7MW0UAREQAREQAREQAREQARGoMQIVESsY+tHgUdHOPHJxg1CxBnFiXAvzz9gWZs69Lc1jl+1gHrzA/xl5wQ7mvr47mH4925j27Zu+fXaGMFMn3nfffeaBBx6wn2HDhmWmVzz33HPN8OHDbbyEKVOm2OkFX3rpJTsd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ZeQalJnt5BMqV0isGDFihBVqXL7xcmfL13c9ysF5jiVlJF+45JtfNC9Ykg91D4kyvvLU0zZ5VtRXB63aioAIiIAIiIAIiIAIiEC9EqgbsaIaDFpnmCeJFUmCRFIdsokVheabdE3t2+7xUCkWEivqtatWvUVABERABERABERABESgvghIrNixcganxIrKsa6UeFDp60isqK8OWrUVAREQAREQAREQAREQgXolILFCYkVwaEmlDXFdL7uYI7GiXrtq1VsEREAEREAEREAEREAE6ouAxAqJFRIrKtgGihVkJFbUVwet2oqACIiACIiACIiACIhAvRKQWFFBQ1XDQLJ7DhRrzNf6+RIr6rWrVr1FQAREQAREQAREQAREoL4I1IRYUesGquonkcO1AYkV9dVBq7YiIAIiIAIiIAIiIAIiUK8EJFZU0LPCGZxaSnwotA1IrKjXrlr1FgEREAEREAEREAEREIH6IiCxQmKFYlakqA1IrKivDlq1FQEREAEREAEREAEREIF6JSCxIkWGaqFv43Ve7XhySKyo165a9RYBERABERABERABERCB+iIgsUJihTwrUtQGJFbUVwet2oqACIiACIiACIiACIhAvRKQWJEiQ1UeErXjIVHovZRYUa9dteotAiIgAiIgAiIgAiIgAvVFQGKFxAp5VqSoDUisqK8OWrUVAREQAREQAREQAREQgXolILEiRYZqoW/jdV7teGRIrKjXrlr1FgEREAEREAEREAEREIH6IiCxQmKFPCtS1AYkVtRXB63aioAIiIAIiIAIiIAIiEC9EpBYkSJDVR4SteMhUei9lFhRr1216i0CIiACIiACIiACIiAC9UVAYoXECnlWpKgNSKyorw5atRUBERABERABERABERCBeiUgsSJFhmqhb+N1Xu14ZEisqNeuWvUWAREQAREQAREQAREQgfoiILFCYoU8K1LUBiRW1FcHrdqKgAiIgAiIgAiIgAiIQL0SkFiRIkNVHhK14yFR6L2UWFGvXbXqLQIiIAIiIAIiIAIiIAL1RUBihcQKeVakqA1IrKivDlq1FQEREAEREAEREAEREIF6JSCxIkWGaqFv43Ve7XhkSKyo165a9a5mAps3bzZbt24tWxF/+uknM2PGjCafzz77rGzXrETGy5cvN5MmTTIjR440l19+ubnkkkvMjTfeaCZMmGD++uuvShShZq7x1VdfNWkftJnFixfXTB1VEREQARFoDgIbN25sjsvqmv8RkFghsUKeFSlqAxIr1HeLQPUQmDdvnjnzzDNNhw4dzJ577mmNbYSFUqdHHnnE7LLLLk0+PXr0KPWlKpIfD37Dhw83u+++e5M6uXqOGzeuImWplYv06dPHyxLxR0kEREAERCB/Aq+99prhd3bXXXc1BxxwgLnrrrvM2rVr889IZxRFQGJFigxVeUjUjodEofcyTWIFb5t5s3fHHXeY/v37m+OPP94ceOCBplu3bua0006zht2oUaP05q+oLjydJ69atcq8/PLL5uqrrzZnn322fRigbdAuBg0aZDDO33rrLfPDDz9UbQW//fZb06lTpyYGYteuXUvuFVBLYsVvv/1munfv3oSbEyncUmJFfk2/HsUK2tIzzzyT14d2NXXqVNu3bNq0KT/IOloEPARoU752+Omnn3qO1qa0EMDDz/0eRZc8z27bti0t1aiJckqskFghz4oUtYE0iBX//POPGTp0qNlnn328HX2003frKNcTJ07UD0BN/KyEKzF//nzTt29fs9tuu+XcNhgesHTp0nCmzbQHocW13/hy9OjRJS1VLYkVAwYMCHKLcpRYkV8Tqkex4vPPP8+pLUXbVXSdfuiII46wv1d///13fsB1tAj8RyDkIcaLGqX0EuDFQ7S/iK7T9yhVjoDEihQZqoW+jdd5teORUe1ixfPPP2/233//YAcf7ex966eccorBoFUqLYF169bZt/3EAYh+1qxZU9oLBXLDkwLjHldK333Pto2HQdwvqymOwcknnxysy/XXXx8gUdjmWhErJk+eHGQWbwP1JFb8+++/jf4vo/+jubYYiRVNh0nF21TS9/3228889dRTRt4Wuba46j2OFybR/yG3Xq64AxIrqrctFFoyhnok9Re8XFOqHAGJFRIr5FmRojZQrWIFwQVvueWWxM49qeOP7sO1/r333qtcL1gHV7r55pu994aAhuVOP/74o317Gb3Hha4feeSRplregA4cONDLlLo9+uijJcVaK2LFxRdfHGSGJxbt8brrrjPHHXecqSex4s033/RygUmuSWJFcWKF65NOPfVUCRa5NroqPQ5PTXc/o8unn366LCWWWFEWrM2e6UEHHeRtR7SpuXPnNnv56qkAEitSZKjKQ6J2PCQKvZfVKFYgVOTq2h19cEhaxz33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BJiatBDBgulLGS7CjHNpSRUXKzBQCZo54oIdDAb9nh0aDDZiVsSHgZzTo2GIBt4UzCjC95WPtzBXndLgbcHMIAgCzDrCeo8D29lZO6IxKw7aq51ZO64hYCbrBNNkfzTAJjN9EBD0gD3bmYM7tzMf3dHKfpwxjWAy9bZWtqxuNpJozAqOIw9EEIQOAoMy2wkxKly8DYkV+Rvmjr+W29lJrEhL16pyioAIiIAIiEBhBCRWFMZNZ4lAPRFYtmyZFR4Y9pHkReH2nXHGGearr75KHaJmESsGnd7Gig7R4SE+sQIjFQGDGUUQHJilgxgWUS+JM7u3NcysQV7EjWA2j6hYQR7ErWCGEvJ479YGYSIqVuAR8cHtrWxATM795O5WjWYcOaFrW+vBwT4XYyIuViCEIGgQVJPrEG/j8P22e1pIrNhucEt8KJyFxIrU9bEqsAiIgAiIgAjkRWDs2LHmqaeeavIheF4p02+//dbkGu66a9euLeWllJcIiECZCDDbx2OPPWZuvvlm06dPH9O9e3dz8MEHm169etltTz75pGHoCEE305iKFisKNTzxlMALIZfzEScO3KtdkwCW0XPxeOj430wb0e1uneCXe+2efD08PfbuGD4GUSMeRNPl75YEFM12HXesloUb7fXKTmJFGrtZlVkEREAEREAEREAEREAERCBfAs0mVtSrsal6S6Aopg1IrMi3i9PxIiACIiACIiACIiACIiACaSQgsSISeLMYI1LnSoSoRBuQWJHGblZlFgEREAEREAEREAEREAERyJeAxAqJFTkNxamEIa5rZBd8JFbk28XpeBEQAREQAREQAREQAREQgTQSkFghsUJiRYragMSKNHazKrMIiIAIiIAIiIAIiIAIiEC+BCRWpMhQledBds+DWmcksSLfLk7Hi4AIiIAIiIAIiIAIiIAIpJGAxAqJFfKsSFEbkFiRxm5WZRYBERABERABERABERABEciXgMSKFBmqte41oPpl9xyRWJFvF6fjRUAEREAEREAEREAEREAE0khAYoXECnlWpKgNSKxIYzerMouACIiACIiACIiACIiACORLQGJFigxVeR5k9zyodUYSK/Lt4nS8CIiACIiACIiACIiACIhAGglIrJBYIc+KFLUBiRVp7GZVZhEQAREQAREQAREQAREQgXwJlESsOOGEE8zdd99tRowYYS699FKz8847ywBOkQFc694ItVQ/iRX5dnE6XgREQAREQAREQAREQAREII0EihYrECg2btxo3nvvPfP++++btWvXmkWLFpn99tsvZ8HiuuuuM+eee27Ox9eS8am6aGhHPm1AYkUau1mVWQREQAREQAREQAREQAREIF8CRYkVhxxyiNm2bZvp1atXRmjYa6+9zPLly80rr7yS2ZbNGJszZ4559NFHcz4+W37aLwGgVtuAxIp8uzgdLwIiIAIiIAIiIAIiIAIikEYCRYkVvXv3tmLFbrvt1khoOPDAA83RRx+d2da+fXtzzTXXmBdeeMGKEj169Mjs+9///mdWrFhh5s6dax555BFzzDHH2H3XXnutOf/88zPHYXzef//95vjjj7fbOnfunDkeoWPChAkGD42ddtqp0Tm1arSqXvUpyEisSGM3qzKLgAiIgAiIgAiIgAiIgAjkS6AosYKhHuvXrzdvvPGGiQoQcUP6nXfeMUuXLjXDhg0zL774oh0qctxxx1lR4YknnjArV6408+fPN2PHjs2IER999JH9Hs3rjz/+sIIE27p162brumrVKvPmm2+aZ555xvz9999m8uTJEisUL6Nm24DEiny7OB0vAiIgAiIgAiIgAiIgAiKQRgJFiRWIBsSa+P77723d8ZAYN26cOfjggzPGYr9+/czq1asbxbDAwwIBwwkRvmEguYoVeFO4fI466iizZcsW079//8w2t0/L+vREqLX7LrEijd2syiwCIiACIiACIiACIiACIpAvgaLFCmcM4llx2223mXnz5tmAmxdccIEVDMaMGWO9KoYPH27cZ8qUKXabO7cYseLII49sJEzMmjXLPP744422uetoKcEi7W1AYkW+XZyOFwEREAEREAEREAEREAERSCOBkokVUSNw/Pjx5uOPP7aCAbEkvvnmGzsEhGEg7nPXXXdlBIVSihXvvvuujV8RLY/WJVLUShuQWJHGblZlFgEREAEREAEREAEREAERyJdAUWLFeeedZ4dzMANI1BgcPHiw+fXXX+22u+++24oV0f1du3Y1J510UuYcn1gxadIk8/bbb2eOIYjnmjVrmsSs6NmzZ+aYnXfe2fz888+Ga0avp3WJFbXSBiRW5NvF6XgREAEREAEREAEREAEREIE0EihKrEAcWLBggfnggw/MySefbBAUWBJMk9gVGIgE4SRmBR4Vu+66qznssMNsjItbbrklIygQdHPmzJkG0YPjOW/gwIE2EOeFF15og2lOnDjR8nUxKlyATWYRYeaR/fff3zz//PNm3bp1mTxqxUBVPSS2uDYgsSKN3azKLAIiIAIiIAIiIAIiIAIikC+BosQKDChiRrz00kt2Rg8uvmnTJsMwkN133z0jRpxxxhlmyZIlNvjln3/+aZ577jmD0OEMMLws8IggjRw50m7v2LGjnTkE8WHjxo2GWUM4Ny5WcC32kxBJTj/99Ey+Ln8tZezXShuQWGH/1fVHBERABERABERABERABESgxgkULVZEjcCDDjqokQgR3cc6XhM77bRTUExgFpH4fkSLDh06NDnHeVYgliCMOI+M+DX1XUJFLbUBiRU13iOreiIgAiIgAiIgAiIgAiIgApZAScWKShqFUbGiktfVtSR+NGcbkFihnlsEREAEREAEREAEREAERKAeCKRWrOjSpYsdOkIMjOY0HnVtiReVbAMSK+qhW1YdRUAEREAEREAEREAEREAEUitWVNJA1LUkSFRLG5BYoU5bBERABERABERABERABESgHghIrNhRhni1GOIqR/a2KLGiHrpl1VEEREAEREAEREAEREAEREBihcQKDaNJURuQWKFOWwREQAREQAREQAREQAREoB4ISKxIkaEqz4Psnge1zkhiRT10y6qjCIiACIiACIiACIiACIiAxAqJFfKsSFEbkFihTlsEREAEREAEREAEREAERKAeCEisSJGhWuteA6pfds8RiRX10C2rjiIgAiIgAiIgAiIgAiIgAhIrJFbIsyJFbUBihTptERABERABERABERABERCBeiAgsSJFhqo8D7J7HtQ6I4kV9dAtq44iIAIiIAIiIAIiIAIiIAISKyRWyLMiRW1AYoU6bREQAREQAREQAREQAREQgXogILEiRYZqrXsNqH7ZPUckVtRDt6w6ioAIiIAIiIAIiIAIiIAISKyQWCHPihS1AYkV6rRFQAREQAREQAREQAREQATqgYDEihQZqvI8yO55UOuMJFbUQ7esOoqACIiACIiACIiACIiACEiskFghz4oUtQGJFeq0RUAEREAEREAEREAEREAE6oGAxIoUGaq17jWg+mX3HJFYUQ/dsuooAiIgAiIgAiIgAiIgAiIgsUJihTwrUtQGJFao0xYBERABERABERABERABEagHAhIrUmSoyvMgu+dBrTOSWFEP3bLqKAIiIAIiIAIiIAIiIAIiILFCYoU8K1LUBiRWqNMWAREQAREQAREQAREQARGoBwISK1JkqNa614Dql91zRGJFPXTLqqMIiIAIiIAIiIAIiIAIiIDECokV8qxIURuQWKFOWwREQAREQAREQAREQAREoB4ISKxIkaEqz4Psnge1zkhiRT10y6qjCIiACIiACIiACIiACIiAxAqJFfKsSFEbkFihTlsEREAEREAEREAEREAERKAeCBQsVuyyc3tz8TkHmIduPcIMu+Fwc+4p+8roTZHRW+seCLVav2oQK6ZPn26eeeYZ72fFihVF9ZuzZ8/25sv11qxZ0yjvyZMnB4/1Hd/o5By+/Pbbb4n5z58/P4dcdIgIiIAIiIAIiIAIiIAIiEAhBAoSK7oc0MF8NvE0s3F+v0aftx8/wXTquHPZRYtrLjjYTH/+FNP39P3Kfq1aNXpVr3QOKakGsWLixIlml1128X5GjBhRSD+UOee4447z5tujR4/MMW6lX79+3mNd2caPH+8OLWj54IMPJuY/evTogvLVSSIgAiIgAiIgAiIgAiIgAtkJFCRWfPjsyVakmPTYCeaUnp1Nr5P3yYgXT95zVN4CQvv2YcPRt2/4jd3t9a+7uIv3Wr5zZJyHGYtNethUg1ixbt06s9dee3kN+e7du5tt27Zl73k8R3zzzTfePBEfHn300SZnZBMrTjvttCbn5Lph69at5rDDDguWhzJJrMiVpo4TAREQAREQAREQAREQgfwJ5C1WnHZsZysUfPvuWWanndpnxIK999rV/Plpb7P+y75mv713NScfs5dZMq2XGXvf0ZljlkztZb547fTM96MO28PMGH+KWT23j1k6rZcZem0344SGw7t2tPvWftHXLHz7TPPwkCPsvvsHH26vg1fHyo/PM3MnNuS3e4edzIv/O9b8Nae3+fmjc8yEB3ua/ffeNXMtGeTpMch1r8L3qhrECrqZwYMHBw35uXPn5t8TGWPuu+8+b5677bab+eWXX5rkmU2sQFBYvHhxk/Ny2TBr1ixvWZzXhsSKXCjqGBEQAREQAREQAREQAREonEDeYsUtlx9ixYpHbz+yiRDw7pMn2n14Wpxx/N52/fVRx2eO2zCvn1kx41z7fa9Ou5hfpp9rhYcn7j7KzHmlYVjJFX0Psvs/nnCqPZ+YGAwvQZy4st9BZmC/g8zXk8603xmK8sz9DWLIyJsbvC1eG3WcGX3HkXb/cw8ck7m2DOCwASw26WFTLWIFsSWihnt0fciQIXn3SHgydO3a1Ztnnz59vPnlIlYggBSSrr32Wm9ZovWUZ0UhZHWOCIiACIiACIiACIiACORGIG+xwg3BuOe6w5oIAS8+eKwVCQb0PjCrWHHjZV3tsaPv7GGOPaKT6XP6vvb7e0+daPOd/8YZ1kvjtoGHmuOO3NN6a7h4GK4M0WEgCB4IGogXpx/X2Ry4725mn73kWSEhIj1CRC73qlrECoZ6MOQjary79QMOOMBs3rw5tx7ov6M+/vhjb17k+frrr3vzykWs6NKli9myZYv3/NBGAnl26tQpWB5XT4kVIYLaLgIiIAIiIAIiIAIiIALFE8hbrBjQ50ArCrz00LEZsYKAm2eduLeZ+cIpdt/Rh3XKKlaMuauHPXbN533NP3P7ZD6fv9owrIOZRlbOPNcegwgx++XTzBGH7mGv6RMr2PfN2w0eFxzPEJTzz1QAzlwMYB2THkGjWsQKup6HHnooaNBPnTo1r97p+uuv9+a1zz77mA0bNnjzykWsQFiYNm2a9/zQxhdffNFbFidSuKXEihBBbRcBERABERABERABERCB4gnkLVbsv89uZtXs3jbOBKIEhu7nr52eiVfxzTtnmZ13bm9jViAaIGBwDDEt+O6Ggdw+8FD7/doLD7b7OefME/Y2xxzeycam2GP3na1nRO/T9jXPj+hpj2VJXk6suOHSrvY724hZgefFqcd2Nvded5gh1sXiyWdn9nOMPmKQ9jZQTWLF8uXLza677uo17K+88sqce6eNGzeavffe25vPTTfdFMwnV7Hi8ssvD+bh23HmmWd6y+JECreUWOGjp20iIAIiIAIiIAIiIAIiUBoCeYsVGHtOaCCgJh4WzqMCMaL/f94MiA94Rqyf18+8OeZ489WkMxqJFQfv38GKHgTDvOPqbvYYzke8IHAn2/G6IEbGsBsOt+cSNJPrM2UpxxLk8/nhx1hxg9gYbHvy7qPMwP4H2UCbP77fSwKFRJqaagPVJFbQBfXu3dtr2DOMguEUuaS33nrLmweiQFKwzlzFio4dO5q//vorl6KYH374IVgWJ1K4pcSKnJDqIBEQAREQAREQAREQAREoiEBBYgWCweV9DrSeCwgEzACy4K2GIRjjhm0PaklMCYZjcMy0/2fvPNysKNK3/ff8yKAgSBQziC4qa0ARFBUwixkFWTNmFxUDIhIUI4qomHNcAcGAriiigoqwLCoKAvVdd+33tnVqOpwz58ww58xT1zXTfbqrq6vurq6u9+m3queN8PHMs4I0mIgTQYH9TLb5wA3DXMf//xlT5p349wvH+33sZxgIAgfHIYS8PGeE+235yV4M4Rg8Pt586H/DUIjPeU8Y0aehDFXKrr/2zaCtiRVPPfVUpnH/xBNPlNUoTZgwITWNQw45JPf4csUKxIW5c+fmpmU7b7nlltS8mEARLiVWGDUtRUAEREAEREAEREAERKD2BJotVpjR3LtnZ9ejWydvRF88YZAf7mH7WCIkMAQk3Bav84lREynCfXzGFBEi6/iee3R2/IXH8JWRgX27Jp9ADfdpvX0b+o1w/duaWLF161a31157pRr4eF0UhU2bNrlu3bqlHl8kBlQiVowYMaIoKy7viyShSGHrRfkrPKEiiIAIiIAIiIAIiIAIiIAIZBKoWqxoBANQZZCIUS91oK2JFbQskydPThUbunbt6n788cfMxocd8+bNyzx2/fr1ucdmiRVZ81+sWrUqN7033ngjNS9Z6UmsyMWpnSIgAiIgAiIgAiIgAiJQFQGJFRpaUeKZUi9Ge3vNZ1sUKz788MNUIx8PhFmzZuU2UMccc0zqsQgRRSFLrMgST6699trcJM8777wmedl///1d1nkkVuTi1E4REAEREAEREAEREAERqIqAxAqJFRIr6qgOtEWxYteuXW7IkCFNDH3EirzhF2vWrEk9huMWL15c2LBliQgzZ850o0aNapL2gAED3J9//pma7ubNm90ee+zR5Jhbb73VnXrqqU22k0eJFakotVEEREAEREAEREAEREAEakJAYkUdGart1ZtA5f5rmE5bFCtoiWbMmJFq0GPUf/nll6mN1fTp01OP6dOnj+NzpkUhT6x47LHHUtN+8cUXU5N98MEHU+N//fXXEitSiWmjCIiACIiACIiACIiACLQsAYkVEivkWVFHdaCtihXff/+969KlS6rBzxc20sLBBx+cGn/q1Klp0ZtsyxMr+Gxqz549m6R/+umnN0mHDUcddVSTuCNHjvRx5VmRikwbRUAEREAEREAEREAERKBFCUisqCNDVR4Gf3kYtFcWbVWsoJUaO3ZsE4Mfz4oDDzzQMVQkDMuWLUuNS/zly5eHUTPX88QKDrr44oubnIMvj/z8888laX7xxRdN4pGPBQsW+HgSK0pw6YcIiIAIiIAIiIAIiIAItAoBiRUSK+RZUUd1oC2LFYsWLUo1+jH8//Wvf5U0aFdccUVq3EMPPbQkXt6PIrHi3XffTT3H/fffX5Ls9ddf3yQe81f897//9fEkVpTg0g8REAEREAEREAEREAERaBUCEivqyFBtr94EKvdfHiVtWaz4/fffHfNNIE7Ef5dffnnSoG3fvt3169evSRyOuffee5N4RStFYgXeHHh1xHkZPnx4kvSOHTvcwIEDm8SZOHFiEkdiRYJCKyIgAiIgAiIgAiIgAiLQagQkVkiskGdFHdWBtixW0GpNmTKlieGPWNC3b1+HSEF4+eWXU+N07drV/fjjj2U3fkViBQllTeK5cuVKf55XXnklNS+vvfZakg+JFQkKrYiACIiACIiACIiACIhAqxGQWFFHhqo8DP7yMGivLNq6WLF06dJU4x/Bwr7Ece6556bGQRSoJJQjVqxduzb1XFdeeaU/1VlnndVk/6BBgxweFxYkVhgJLUVABERABERABERABESg9QhIrJBYIc+KOqoDbV2soOkaOnRoEwEAseKcc85xW7ZsccwHEQ/N4Pezzz5bUctXjlhBgqNHj25yPjw91q9f77p3795kH3NYhEFiRUhD6yIgAiIgAiIgAiIgAiLQOgQkVtSRodpevQlU7r88SupBrLj77rubCACIEYgUs2bNSt239957uz/++KOiVq9cseKJJ55IPeeoUaNSt3/++ecl+ZBYUYJDP0RABERABERABERABESgVQhIrJBYIc+KOqoD9SBW4LHA/BNp3hN77rln6na+DlJpKFes+O2331yvXr1SzxvnccSIEU2yIbGiCRJtEAEREAEREAEREAEREIEWJyCxoo4MVXkY/OVh0F5Z1INYQauVJSTE4oD9XrFiRcWNXdY5Zs6c2SStSZMmlSVWzJkzp8mxEiuaINEGERABERABERABERABEWhxAhIrJFbIs6KO6kC9iBWLFy8uSxxArDjssMOa1dBVIla8//77hfnp1q2b27hxY5O8SKxogkQbREAEREAEREAEREAERKDFCUisqCNDtb16E6jcf3mU1ItYwfwTffr0KRQIECvuu+++ZjV0lYgVu3btcgcddFBufk4//fTUfEisSMWijSIgAiIgAiIgAiIgAiLQogQkVkiskGdFHdWBehEraLWmTp2aKw4gVDC3xU8//dSsRq4SsYIT3HHHHbn5eeGFF1LzIbEiFYs2ioAIiIAIiIAIiIAIiECLEpBYUUeGqjwM/vIwaK8s6kmsWL58ea44gFgxfvz4ZjdwlYoV33//vevSpUtqnvr16+e2b9+emheJFalYtFEEREAEREAEREAEREAEWpRAmxQrOnTooLf9ElFUB1LqQD2JFbRcw4YNSxUHECr4e+6555rdwFUqVnCik046KTU/V155ZWY+JFZkotEOERABERABERABERABEWgxAlWJFaNGjXJjx44tMSq7d+/uJk+e7FiGb78xEo477riSbeF+W7/kkkvchg0bCuNZfC3lbdCe6kC9iRX33HNPqjiAUIE3w7Zt25rduDVHrHjqqadS87Ny5crMfEisyESjHSIgAiIgAiIgAiIgAiLQYgSqEiuuvfZa991335UICyeffLLPLMvQiPz2228dby/DbWnrEiskPqTVC237X72oN7Hihx9+8PNSmCdFuMzzZiinxWuOWLF161bXu3fvEsGi6GskEivKuRqKIwIiIAIiIAIiIAIiIAK1JVCVWGGd/P322y8RIWxmf5ZmYLKfMHTo0GSb7YuXEiskVsR1Qr//qhP1JlbUtrlSaiIgAiIgAiIgAiIgAiIgAu2FQFViBXNLbNy40U2aNCkRIT777DO3ZMkSt2rVqmQbAgRvWM3o5LgLL7zQPfzww+6uu+4qETHSxIohQ4a4GTNmuMcff9xdfvnlfpI8S4vl6NGj3ezZs928efPchAkTkvOw74gjjnA33nijXz7wwAM+nX322ccNGjTIfzIRUYVPGobp5eUvjKf1v4xosWgdFhIr2kvTrHKKgAiIgAiIgAiIgAiIQPsmUJVYgYH69NNPO8aBs963b1/3559/euN/586d/jfb2b9w4cJEEEDM+Oabb9zNN9/sHn30Uffrr7+64cOH+/2xWDFy5EiH6zafFbz33nvdunXr3Ouvv56kdfXVV7vff//dzZ07182aNcv98ssvjnHyZjyTHuPiv/rqK7dgwQIvmnz99dd++MqiRYvcBx984Hbt2uUOOOCA5Ji8/Fm6WraOcS7OpZwlVrTvBlulFwEREAEREAEREAEREIH2QqBqseLSSy91P/74ozf0J06c6JYtW+bXP/30U8dvjE28KvCkYJ1x5lu2bEmEDLbhYYFAwHosVjDxHfvZxx+ixvvvv+89IxBHECrOPffcZD+Tfu7YscPhjWHp8UlC855A/CAglFiaCCDMv8HvovzZMVqWGtHi0To8JFa0l6ZZ5RQBERABERABERABERCB9k2garFi33339QQPPvhg7yVx++23e6MfLwi8JthOGDBgQLIdr4pbb701+XvppZe8pwUGbyhW9OjRw3s9IDCkGcMIC3/88Yfr2LFjyf7169cnQ1PC9EiDr5QQGDpiaXL+Rx55pKz82TFato5xLs6lnCVW+NtX/0RABERABERABERABERABBqcQNViBcbk2rVr/VwS33//vTNhYcyYMX7IBnNMfPnll4kwgCjAfBZ4NoR/5tkQigvMK0EYNmxYcnxovJ5//vlu06ZNTfZ98cUXbtq0aX57mB7HduvWzacZihUMMTGxoih/4fm1XmpIi0fL85BY0eAtsoonAiIgAiIgAiIgAiIgAiLgCdRErGAuiE8++cTPF9GpUycvEnTt2tUP0WD7nDlzEkEBESGcfBMDd/DgwW7EiBFNxAUmumQ+i4suuig5nnRPPPFE1y1zV5EAACAASURBVKtXL3fkkUf6QiBqmKHcs2dPf97x48c3SY84RWJFUf7sPFq2vGEuxk0ZS6xQyy0CIiACIiACIiACIiACItAeCNRErDj77LM9K4ZThAbmG2+84beHX+hgngnmrMCrokuXLn5iy9WrV7upU6emigt33323w2ODr3ogUPDVDwSMPffc08dfunSp4zz9+/d3vXv39hN+rlmzxnXu3Dk1vSKxoih/Yfm03tSYFpOWZSKxoj00yyqjCIiACIiACIiACIiACIhATcSKPn36+LklrrjiCi8QmMGKlwKTXZqwYNsZKoKgwD4+ffrggw8688hIG7bx0EMPOSbJ5KsdzEcxduzY5Dx4VbzzzjuOr4+wf8WKFX6eDDtXWnpc9qxhIByXlz9LV8uWNcrFN52vxAo12iIgAiIgAiIgAiIgAiIgAu2BQE3EiuYalngxxJNjZqWFF8bAgQMdQ0PS4iCI4HmRtq+52yrJX3PPoePSjXJxSecisaI9NMsqowiIgAiIgAiIgAiIgAiIwG4VK2SQphuk4iIuWXVAYoUabREQAREQAREQAREQAREQgfZAQGLF/8kwzjKMtb3t1Q2JFe2hWVYZRUAEREAEREAEREAEREAEJFZIrKjp0BkJHC0rcEisUKMtAiIgAiIgAiIgAiIgAiLQHghIrJBYIbGijuqAxIr20CyrjCIgAiIgAiIgAiIgAiIgAhIr6shQlddCy3ot1ANfiRVqtEVABERABERABERABERABNoDAYkVEivkWVFHdUBiRXtollVGERABERABERABERABERABiRV1ZKjWw5t/5bFlvT8kVqjRFgEREAEREAEREAEREAERaA8EJFZIrJBnRR3VAYkV7aFZVhlFQAREQAREQAREQAREQAQkVtSRoSqvhZb1WqgHvhIr1GiLgAiIgAiIgAiIgAiIgAi0BwJ1K1Z07tzZ7bfffq5Tp05leQZ06NChrHj1YLAqj+1XtJBY0R6aZZVRBERABERABERABERABESgarFiwoQJbvLkycnfueee64YOHdqiwsDIkSPdf/7zH7dz50532WWXFZ5r//3391d6yJAhPu4hhxzibrrppsLjskSBgQMH+vJ27dq12Wlkpd3c7YsXL3YLFy5s0fzsueee7s4773R77bVXi56nuQzaw3ESK9Roi4AIiIAIiIAIiIAIiIAItAcCVYsVH374oduwYYNbunSp//vpp588t0ceeaRqg3b06NFu0qRJTdL54IMP3Msvv+z22GMP161btyb7Y6M1FisuueQSt27dOod3Rhy3nN9jxozxZezdu3fZx2eVpZzzlROn1mIFzKZPn17iuYIIhUh0+OGHl13ucvKuOOV7ikisaA/NssooAiIgAiIgAiIgAiIgAiJQE7Fi7ty5ifHKcIuJEyd6suPHj0+2N8cgveOOO9yyZcuapLF+/XqH4FBumrFYUe5xWfGaI1ZklSXrHJVur7VYgbhC6NKlS9mcK82z4pcvUhgriRVqtEVABERABERABERABERABNoDgZqLFWZU4bnAm3n7jfE7e/ZsN2/ePMfQEdvO8qyzznLnnHOOO/PMM93jjz/uDjzwQC9G4LXxww8/uBkzZvhj+vbt69d//fVX99JLL/n17t27+7R69uzppk2b5o+/+eabHXHtHLFYMXz4cEcc28/yoIMOcggKjz76qLv88stzvS5iseKII45wN954ozvggAP8MAnySxksfYSVuCzss+NYzp8/v4RLHi+OZSgLQzKeeOIJd8YZZ7hYrIA9cSwPxq5Xr17JNtZvuOEGz+yf//xn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hRptERABERABERABERABERCB9kBAYoXECnlW1FEdkFjRHppllVEEREAEREAEREAEREAEREBiRR0Zqo3sMaCylec1IrFCjbYIiIAIiIAIiIAIiIAIiEB7ICCxogyxokOHDvI+KIOTBIfyBIdqOEmsaA/NssooAiIgAiIgAiIgAiIgAiJQtVgxYcIEd8wxx6Qa80cddZQ77bTTUvelGWwLFy50ixcvTuKvW7fOTZkyJfmddkzWNgSGyZMnJ38TJ050/fv3rzitSy65xG3YsKHi47Lype0tb9A3MmOJFWq0RUAEREAEREAEREAEREAE2gOBqsWKDz/80M2dOzfVmJ81a5ZbsWJF6r40g7KWYkWnTp389Vu9erVbunSpW7VqlduxY4f77LPP3EEHHVR2nmKxYv/993fTp093pJ9WBm2TGNGSdUBiRXtollVGERABERABERABERABERCBhhcrTj311ERU6NWrl/vmm2/ckiVLkm1FhmUsVowePdrXmi5dupSdRtE5tF8CR7l1QGKFGm0REAEREAEREAEREAEREIH2QKDVxYoDDzzQ3X777e6RRx5xkyZNch07dkyM/iLPip49e7pp06a5xx9/3N18882ub9++ybGxsWeeFaFYQZw5c+a4jz/+uOQ4PC3uuOMO9+ijj7rLL7/cde7cOdkfihWjRo1yixYt8vXi7rvvdldddVUSLz6/fkuAaIk6ILGiPTTLKqMIiIAIiIAIiIAIiIAIiECrihXMbbFly5ZEbFizZo03/s2oyxMrevfu7dauXeuHlSB2vPfee34uif322y9VMEgTK4YOHep++OEHd//99yfHHHvsse63337z3hZ33nmnI08MbbFhHqFYcdJJJ7nnn3/e1xqGviCYWN61lDjRGnVAYoUabREQAREQAREQAREQAREQgfZAoCZixfbt290vv/zS5I/t4ZwVrN91112JgT948GA/j8SwYcP8tjyxYubMmX7eCfN6YALNd999t0TsCI1FEys2btzovvvuO7dp0yZ/PZcvX+66deuW5GHlypXuoYceSn7vtddebvPmze6yyy7z20KxgvQ1DESiRFjPWntdYkV7aJZVRhEQAREQAREQAREQAREQgZqIFS+++KI34jHkwz/mhjCxokePHm7Xrl1uwYIF7tZbb03+fv31V3f++ecXihWkE3syMIxk/fr1idAQGo4mVtxwww3u+OOPdyeccIK76aabvHBBHohreYq/ZvLkk086/ogjsULiRFivdve6xAo12iIgAiIgAiIgAiIgAiIgAu2BQE3EinK+BjJo0CDPc/bs2V50QHiwvxEjRhSKFUyMecUVV5QIE2eddZYfwpFmQJpYEc9ZwSdMEU0GDBjgLE/m2WHpUJ5XXnlFYsX/SaiwOtFWlhIr2kOzrDKKgAiIgAiIgAiIgAiIgAi0mljBsA28KM4888wSwQGPB+ajwBjMGwaCeMAEmKHROGPGjCaTZdr+LLHi9NNP91edISiWpwsuuKAkXeasuO+++/w2eVZIsLA61RaWEivUaIuACIiACIiACIiACIiACLQHAq0mVmDoMV/FV1995YYMGeLnjbjmmmvcunXrkjkk8sQKJrfctm2bw5uCz4bym8k6L7744hKhwQxKEyv4ugeeE4cddpibPHmyW716tZ/7wuKRJ+a0GD58uOvevbsjT3/++afjCyHEicUKRA48M8aOHesGDhyYem5LW0sJHbWuAxIr2kOzrDKKgAiIgAiIgAiIgAiIgAi0qljRtWtXN3/+fC86IDzgwTBmzJjE4M8TKzD6pkyZ4gUKxIKtW7f6YSR4R6QZhCZW2CXeuXOnY3JN5stg+IcdQ57mzZvn80S6fC1k3Lhxyf5YrOC4hx9+2AsaO3bs8N4ZlpaWEidaug5IrLA7WksREAEREAEREAEREAEREIFGJlC1WNEc44wvetjQj0qPR5zAo6Fjx46JoFBpGmnxyVP//v3LTrNXr16Ov7S0tE2iRUvVAYkVjdwcq2wiIAIiIAIiIAIiIAIiIAJGYLeIFS1lyCldiQSNXgckVljTpaUIiIAIiIAIiIAIiIAIiEAjE5BYoS9eyDukjuqAxIpGbo5VNhEQAREQAREQAREQAREQASMgsaKODNVG9xpQ+Yo9YyRWWNOlpQiIgAiIgAiIgAiIgAiIQCMTkFghsUKeFXVUByRWNHJzrLKJgAiIgAiIgAiIgAiIgAgYAYkVdWSoyvOg2POg0RlJrLCmS0sREAEREAEREAEREAEREIFGJiCxQmKFPCvqqA5IrGjk5lhlEwEREAEREAEREAEREAERMAISK+rIUG10rwGVr9hzRGKFNV1aioAIiIAIiIAIiIAIiIAINDIBiRUSK+RZUUd1QGJFIzfHKpsIiIAIiIAIiIAIiIAIiIARkFhRR4aqPA+KPQ8anZHECmu6tBQBERABERABERABERABEWhkAhIrJFbIs6KO6oDEikZujlU2ERABERABERABERABERABI1C1WDFhwgR3zDHHpBq8Rx11lDvttNNS96W9AV+4cKFbvHhxEn/dunVuypQpye+0Y7K2dejQwU2ePDn5u+yyyxx57d+/f7PSyzqPtsvboTXrgMQKa7q0FAEREAEREAEREAEREAERaGQCVYsVH374oZs7d26qADBr1iy3YsWK1H1pBl4txYpOnTr56/bVV1+5pUuXumXLlrnffvvN/fHHHw7hIu38u3Pb6NGj3aRJk9pcvnYnE527qRAksaKRm2OVTQREQAREQAREQAREQAREwAg0vFhx5plnJgJA9+7d3Zw5c9y2bdtcnz59ku1twSi+4447vKDSFvKiPDQVCdoKE4kV1nRpKQIiIAIiIAIiIAIiIAIi0MgEWl2sOPDAA93tt9/uHnnkEe9J0LFjx0Q0KPKs6Nmzp5s2bZp7/PHH3c033+z69u2bHBsbk+ZZEYoVxDnggAP89Rw1apQ/9qKLLnLjxo0rSeemm25yhx9+uN92xBFHuBtvvNH/fvDBB90DDzzgxowZUxL/rLPOcuecc44744wzfN4QHoYOHVoSh3OfcMIJbvbs2d4T5aSTTkr2X3LJJQ4PlR9++MHNmDHDD1eJy6PfbVdAaM1rI7GikZtjlU0EREAEREAEREAEREAERMAItKpYwdwWW7ZsScSGNWvWuEWLFiVGe55Y0bt3b7d27Vo/rASx47333nMbNmxw++23X3J8aDRmiRUICgQTE9544w3vbREe+/PPPzsEBLaxxBNj/fr1DrHiqaeecjt27HDXXnttcl7y/csvv7jVq1c7hr68++67fsjJyJEjkzhXXnmlL/s999zj7rrrLh+fOTU4x9SpU325KA+eH2effXZyXJgvrUuwkFhhTZeWIiACIiACIiACIiACIiACjUygJmLF9u3bvfGNwR7+sT2cs4J1DHUzugcPHuwN/2HDhvlteWLFzJkz3apVq1znzp19XCbQRBQIxQ5Ll6WJFXgynHfeee7888/3Xg0IEQgdHE+8csQK5rk45JBDknwjMvz++++JZwf5/vLLL90ee+yRxCFfK1eu9L/33ntvt3XrVjd27NhkP/nZuHFjkg8NA5EQEdbfrHWJFY3cHKtsIiACIiACIiACIiACIiACRqAmYsWLL77omCAy/luyZEkiVvTo0cPt2rXLLViwwN16663J36+//uqFBIyzPLECoYOhH6ERx4SUeDyE22zdxAr2IyTwh7gxffp0t+eeeybHlCNW4PFg6bIkbYQYGz4S55s4xx9/vGeMgHHKKad4Uea2225Lyo2IQhg0aJBPW2KFxIqwjmWtS6ywpktLERABERABERABERABERCBRiZQE7GinK+BYJQTMNIRHcK/ESNGeIM9NvrDT5d+88037oorrigRDZgrgi98pBl2JlbEc1bEcZsjVpDG5s2bM0UW9h922GG+vJQbLwryGZbZ1m3eDYkVEiviupn2W2JFIzfHKpsIiIAIiIAIiIAIiIAIiIARaDWxgmEXeFHE4gGTTjIfBYZZnljxyiuvuEcffbREmGAyyo8//rhkmxl45YoVzzzzjHvuueeSNLp27eqHsoRzVmzatCkZrkH6TBJKCEWW559/PkmDOHweFYGCch955JFu586djuEglj+8O0488URnE4xKrJBYYXUjbymxwpouLUVABERABERABERABERABBqZQKuJFRhgzFfx1VdfuSFDhrhu3bq5a665xuE9wTr788QKvp7BRJd4U3Tp0sXxm8k6L7744kQACI28csUK5rNARJkwYYLbf//9fR644KFYwe+HHnrIDRw40E/MuWzZMrd8+fLkvOQbMWLKlClur7328sNhGDrCZJqWp6VLl7oXXnjB9erVy382lTktnn322WT/BRdc4L01BgwY4Piz47SUiBHWAYkVjdwcq2wiIAIiIAIiIAIiIAIiIAJGoFXFCrwW5s+f70UHhAc+1xl+BjRPrMBgQwxAoGDuCyasZCiFTZQZGnSslytWMJcGHht4QTCRJl/zYOLLUKzAs+Lpp5/250WUYO4LhAs7J/mmLJ988onnSjrMzYGoYnEYDvLOO+/4uSs4F8LFvvvum+zv3r27n5CTBEjfjtNSYkVYByRWWNOlpQiIgAiIgAiIgAiIgAiIQCMTqFqsCA2pctf5oocN/Sj3GIuHOIFQYMMnbHu1S0QL8/AI00K0sAk2+/Tp43r27NlESAhFFkSJUKQI02Kd4R8IE/F2+92vX7/UfNh+Ldu3eCGxopGbY5VNBERABERABERABERABETACOwWsaKeDO5QrMjKdyhWZMXR9vYtMtTq+kussKZLSxEQAREQAREQAREQAREQgUYmILHi//KN6LPPPtsPz8gzNu+//36X9UWUvOO0L5+9+DTlI7GikZtjlU0EREAEREAEREAEREAERMAISKwoECtkMDc1mMVk9zGRWGFNl5YiIAIiIAIiIAIiIAIiIAKNTEBihcSKzPkzJErsPlEii73EikZujlU2ERABERABERABERABERABIyCxQmKFxIo6qgMSK6zp0lIEREAEREAEREAEREAERKCRCUisqCNDNettu7a3PQ+IlromEisauTlW2URABERABERABERABERABIyAxAqJFfKsqKM6ILHCmi4tRUAEREAEREAEREAEREAEGpmAxIo6MlRb6m290q0fzwyJFY3cHKtsIiACIiACIiACIiACIiACRkBihcQKeVbUUR2QWGFNl5YiIAIiIAIiIAIiIAIiIAKNTEBiRR0ZqvKAqB8PiJa6VhIrGrk5VtlEQAREQAREQAREQAREQASMQE3FihNPPNGNGzeuzb+pnzBhgps8eXLyd84557ihQ4e2+Xy3lAGsdOtHBJFYYU2XliIgAiIgAiIgAiIgAiIgAo1MoGZiRZcuXdymTZvc77//7nr16rVbDP/999/fTZ8+3XXq1Cn3/B9++KHbsGGDW7p0qf9jnbBgwYLc42TU149R36jXSmJFIzfHrVu2HTt2uKOOOir5Gz16dOtmoI7P9tBDDyXcYPj000/XcWnab9Y/+ugjd+2117qnnnrK913aLwmVvIjAhRdeWHLPf/fdd0WHVLy/Fm3yL7/84vuyN954o/v3v/9dcR50gAikEfj+++/d7bff7mbNmuXtp7Q4edv+9a9/ldw/t9xyS1507ROBEgI1EyvwTti4caOjQk+dOnW3GP3W2UY4yTNWESvmzp2bxOnQoYO74IILPBi8Q/KO1T4JFruzDkisKGm/9MM5LxLTkQ7/aIeLwp9//uk6d+6c/PXu3bvoEO3//wRuvfXWhBsMZ8+e3WbYPProoyV14aWXXmozeWtLGfnss89KruGVV17ZlrKXm5cHH3yw5BrTnykn8IImbCduvvnm5LC43hAPA6OcQLwwXdaXLFlSzqF1E2fEiBEl9WX16tU1z3st2uQzzzwzyWf37t3dTz/9VPN8FiX4448/uoULF7qrr77aHXfccW7AgAHuhBNOcNddd51btGiRf2YVpaH9pQS+/vprh0iOV/iRRx7p+vfv74499lh3ySWXeHvmjz/+KD2ghr+2bdvmBg4cmNSrv/3tbxWn/sorryTH88w877zzKk5DB7RfAjUTK958802vuOHZ8Mknn6Qa/IceeqibMWOGe/zxx93pp5/uzj//fHfaaaeVxKVBo+PHw/ekk04q2Tdt2jT397//3R/HTXvWWWc5EyZGjRrlG0Eu5d133+2uuuqqkmNDAzMWK9iHYIFnCOfgNw0snZfwuHPPPdef07bl5cfiaClxo5Z1QGJF+22ss0o+Z86ckk4AHQHegBSFWnSMi87RGvvpSH3xxRfJ39q1a5t92q+++ipJhzR37dqVmlZbFiumTJlSUh94Hio0JcCb51Cs69u3b+b1bnr07t3y3HPPNck790FRoM8Vlvm2225LDonrDfHoY5UTiBemy3qYdjlptPU41YgVmzdvLmlXfv7559TiVtsm41XRtWvXkmvB86E1w+LFi12fPn1K8hDXDcSLV199tTWz1WrnWr9+fcm1/u2336o6986dO90999zjEJ5ijuHvfffd1wtEVZ0s4+DXXnutybkReysJEisqoaW4MYGaiBXcJNxQiBGs08E7/PDDSwx9vB4YIvLGG2/4Gw/3tF9//bVk6AXiwJYtW/z+u+66y9HwoiKasbdu3TpHQ/DWW2+5hx9+2MflJmI/wsbzzz/vy4fQwRsDOy5epokVhx12mD8WDxHi05FZtWpVSRrPPPOMe+KJLe90+AAAIABJREFUJ5JtefmJz6nfEi1qUQckVsRNmH7T1oadFtYPPPBA3ybn0am2Y5yXdmvuQ2AIyz9y5Mhmn37QoEElaWUZgBIrmo24zRz43nvvlVxr865sMxnMyQj1EnElrPcvvvhizhHO97f23HPPkmO++eab5Jg0sQIDiZc4eYH9aYaUxIq/qDHEOLxWWS7wtWiTeeFn5+JlHm/kWyNs3brVv+W3c5ez5KViVhvbGnluiXPEgiD2SnMDHpK8iC2HpcW57777mnu6zOOwxfbaa68kHwy5x+arJEisqISW4sYEaiJW4E2xYsWKxIh/++233fz585PfGGkY/o899liyrUePHu7LL79MxIq9997b0diNHTs2icNNz9ASvB5IA3EAFzIz+k4++WRH4477MtsqGQaC98e9997r/3BXRP38+OOPvSpNWuWKFXn5sXxqKaGiVnVAYkXchLXv37RZ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Y8+ePV2fPn1K8hCeI2udclO+rP3xdsoVl9XiMAwE746s61XEJO8aFB1redDyf6KFxIpGbo5VNhEQAREQAREQAREQAREQASOw28QKGZ+lb8zFQzzKqQMSK6zp0lIEREAEREAEREAEREAERKCRCUis0PwIZXtflGNMK07Lii4SKxq5OVbZREAEREAEREAEREAEREAEjIDECokVEivqqA5IrLCmS0sREAEREAEREAEREAEREIFGJiCxoo4MVXkttKzXQj3wlVjRyM2xyiYCIiACIiACIiACIiACImAEJFZIrJBnRR3VAYkV1nRpKQIiIAIiIAIiIAIiIAIi0MgEJFbUkaFaD2/+lceW9f6QWNHIzbHKJgIiIAIiIAIiIAIiIAIiYAQkVkiskGdFHdUBiRXWdGkpAiIgAiIgAiIgAiIgAiLQyAQkVtSRoSqvhZb1WqgHvhIrGrk5VtlEQAREQAREQAREQAREQASMgMQKiRXyrKijOiCxwpouLUVABERABERABERABERABBqZQF2IFR06dJBBXUcGdT14KNRrHiVWNHJzrLKJgAiIgAiIgAiIgAiIgAgYgarFigkTJrjJkycnf+eee64bOnRozcSF/fff3+d1yJAhNUuzWkM1LrOVf+TIkT6PhxxyiLvpppuS/C5cuNAtXrw4+d2c85966qnutttuc9dff72z8zQnnUqOoZxnnXVWVfmu5HyKWzzMRWKFNV1aioAIiIAIiIAIiIAIiIAINDKBqsWKDz/80G3YsMEtXbrU//3000+e1yOPPFITI7ctihWUeePGje7TTz8t+TOB4pJLLnHr1q1znTt39gyqESs6derk3njjDX++RYsWOc69Y8cOx3rHjh1rwjhLJHj88cfdM88806LnyDq3tqcLFxIrGrk5VtlEQAREQAREQAREQAREQASMQE3Eirlz5yYGLUM2Jk6c6NMfP358sr25xmdbFSvCMheVrRqx4sILL3SbNm1yffv2TVgeeeSR7s8//3SIIkXn1v50o79euUissKZLSxEQAREQAREQAREQAREQgUYmUHOxwoxAPAumT5/ujWm8Ay699FL32GOPucsvv7zE8Lb4Y8aMcQ888IB76KGHXChypIkV5513nrvllltct27dfPp77bWX/403x5lnnum6d+9eYsT36dPH3XDDDe6JJ55wV111lTvhhBPcNddcUxLn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5qLIi1PtvqLr1Bp5qLYM9Xq8hoE0cnOssomACIiACIiACIiACIiACBiBVhMrdpdxeMEFF/hhH8ydgfcCk04yhCIWMHZX/nTe5nsZtEd2Eius6dJSBERABERABERABERABESgkQk0vFiBQcvkjz/++KP/Csm3337rJk+e3KKeB+3RiFaZW0d0kVjRyM2xyiYCIiACIiACIiACIiACImAE2oVYYYa0zeFgv7VsHQNbnGvHWWKFNV1aioAIiIAIiIAIiIAIiIAINDKBdiVWyGiundEslruHpcSKRm6OVTYREAEREAEREAEREAEREAEjILHi/3aP0SljX9ybUwckVljTpaUIiIAIiIAIiIAIiIAIiEAjE5BYIbFC83fUUR2QWNHIzbHKJgIiIAIiIAIiIAIiIAIiYAQkVtSRodqcN/E6prE8OCRWWNOlpQiIgAiIgAiIgAiIgAiIQCMTkFghsUKeFXVUByRWNHJzrLKJgAiIgAiIgAiIgAiIgAgYAYkVdWSoykuisbwkmnM9JVZY06WlCIiACIiACIiACIiACIhAIxOQWCGxouaeFR06dKh5ms0x7BvxGIkVjdwcq2wiIAIiIAIiIAIiIAIiIAJGoCqx4phjjnFnnXVWpmF65plnuqOPPjpzf54xueeee7o777zT7bXXXmUdv3DhQrd48eLcuOvWrXNTpkzJjZOXp9beR3koV9p5x40b5yZPnpz5d/bZZ6cel5ZWLbddcsklbsOGDbvl3LUsR1tNS2KFNV1aioAIiIAIiIAIiIAIiIAINDKBqsSK8ePHu507d7pBgwY1MU779evnduzY4U455ZQm+8oxBIcOHer+85//uMMPP7ys49ubWLFgwQL36aef+r9///vfvo5+/fXXybbnn3++LG7lXItK4lQqVowePdpNmjRpt+S1knK1lbgSKxq5OVbZREAEREAEREAEREAEREAEjEBVYkWnTp3cTz/95G6++eYmxua0adPc+vXrXceOHZvsawnDr72JFSHDwYMH++t51FFHtQrr8NzxeqVixR133OGWLVu22/Mdl6Ot/pZYYU2XliIgAiIgAiIgAiIgAiIgAo1MoCqxAoPurrvucrzRj4073vYzjMO2n3jiiQ5vgNtuu80NGTIk2c5+hpKcc845jmEjjz/+uDvwwANdr1693IwZM1zfvn2TuAcffLCbNWuWe+CBB9xxxx3nwrkRTKw444wzfBqc+5BDDkmO5TzxMBCOv/DCC93DDz/sy4E3h+WXJV4dnGvOnDneQ6Rz584l+8O4DFe55ZZb3COPPOLL0b179yQu+yjLfvvt56677jo3d+5cN3LkyGS/pUN+yfcTTzzhKEfeMBA7hmWeWMFwGoQjuN50002eqx1r3DkX14a8de3a1SF6wITjevfuneTTynHooYd6XpQVcSIUpGKxAkHr0ksvdY899pi7/PLLS64ncT/88EP3ww8/eD4TJkxIzpWXb/JPnsnj9OnT3d///vfkOCtboy4lVjRyc6yyiYAIiIAIiIAIiIAIiIAIGIGqxYqDDjrIp3XssccmBuOIESPcrl273AEHHOC3nX/++e7333/3QgOiwh9//OFw/zeDkm3Mc7B27VpvNGMM77PPPj7dYcOG+XgIHL/++qt7+umnfTobN250t99+e0kav/zyi1u9erXf/+6777qtW7e6448/PokTixVLlixx33zzjfcMefTRR336w4cP9/GPPPJIt337dvfQQw95geX77793eAFYnsNlly5d3BdffOENb8QGhJoPPvggibv//vv7snz77bd+DgqGaPz555/u+uuvT+KQTxiRbwQZyrFly5bMOSvC82eJFYgLa9as8WneeOON7p133vG/TUiB++bNm93HH3/sxQx4IR7gLYN4ARuY2bmsHJs2bfJCCqILx7/44otJnFisQFD47rvvvAjz5ptv+muCEEGaU6dOdStWrPDXHkHI5tkoyveVV17p2XA97rvvPs8trE+W30ZcSqywpktLERABERABERABERABERCBRiZQtViBQYhhjlFqxuG8efO8gWy/EStOPvnkZD8CwKJFi5LfGM28Xe/Zs2eyLRYr8EQIJ8c899xzvSFtb/VJ48svv3R77LFHkgbnwBC3fIRiBXNpIAaEnhuUAQGD+DfccINPz47F6+Gqq64q8eawfeSVoTB27oEDB/r5OhByiGNG/mWXXZbk5Z577nGffPJJ8pv1kAlpUR7KZefJWmaJFffee68XH8wDBVZfffWVu+KKK3yapM1vxBbSxjOEwMSpYb5t3hArB4KE5QUuzE1y6qmn+m2hWMH5EElCjxVEmJBD2jCQony//vrrbv78+UkeqFt45VieGnlZL2IF883gecOcNgptnwDi788//9zmM0qb9eOPP+72fLZWPmgv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2u473/lO93//93/dH//4x+7Vr3713N4RX/3qV7vLL7+8u/vd797d5S536ZAfP/3pTzveFutlzE6RFWeffXb3hz/8obvqqqvK3//+7/8W9K+++urunve857rla73Ku9p43/e+95U6Vs/XX399weCGG25YuXbppZfuGCxWi+Ei3kuyYnHCL2NKBBKBRCARSAQSgUQgEUgEEoHlRWAhZMW73vWuFUPV8o3nPe953a233tq97W1vW7k+i6H2s5/9rBAUszy7qGdmISu+/e1v71KOhz3sYYXAeNOb3rTL9UXladnjeeADH1ha9EEHHbQjy7+Z9ZNkxfIK08xZIpAIJAKJQCKQCCQCiUAikAgsDoGFkxVhyCEs/vKXv3TIgLh2j3vcozvjjDO6D33oQ2V5RywX+ed//ueO4f+73/2uu+yyy8r5Xe961+6AAw4oHhrx/jOf+czu2c9+dveEJzyhQ5Cccsop3X3uc5+V+D1neYalGhdeeGH35je/uUMsxPuOyJQXvvCF3fvf//5y/9BDDy1oDi0D4VnRkhXi4Unwmc98ZiXuqXQf9ahHde94xzu6d77znd2RRx75D94ihx9+eHf++ed3F1xwQWdpTZ3nF7zgBZ1lGPU1y2PE6dq9733vgtm//uu/ljKdeeaZK8/CH7YwP/HEE7s73elOK/e8e9hhh5V04XnEEUfscq9Orz7vIyt4w0jnIQ95yC5xPPnJT+5OOumkcu3Rj350J2/y/Z73vKfg8aQnPWmX56XzoAc9qDvrrLNKHamr3XfffeWZPffcc+Xe85///FL2Om/b/TzJisUJv4wpEUgEEoFEIBFIBBKBRCARSASWF4F1IysYjfafeMlLXlIMTQb197///e7//b//VwzWK664ovxGStzvfvcrRvzvf//77otf/GI5dx3p8Otf/3rFUP3P//zP7qabbirkAcP/Rz/6UXfLLbd0d77znVeeueSSS7of/OAHheT4wAc+UAgQpEcYsQiG3/zmN4Xs+MQnPlGWsKieecgKy1J+8YtfFIM74h1L174Xf/rTn7r3vve93ete97ruJz/5SffGN75xJU+nnnpq8dRAGJx33nndb3/72+6cc85Zuf+FL3yhYBJpOf7yl79c8UKRd8GSGWRP7PNhD5Dbbrut+9SnPtW99a1vLfc///nPr8SL7OEBIy3EjnTtQVGn03feR1Z47pvf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Oodsiy8SK+qvk67WGZ922mnupptuqlZ1VannnnvucaNGjaqormrUUVEDgsJ//fWX69mzp3v66aeDrbmrc+fOdSeddFLuRn0TAREQAREQAREQARFoQKDRYsWa24d4sWLYoC5u6U2D/Popxx+YGPaXTu7lt/22dYLbsPho985jI/33l1cc6/Mc3rej/84wEkSKjUuH+e8IH932+0/QeGrx0X7biluPdA/f8d/xltw4yJe3+hnK8cIDx3jBhLouO6uX3z9uxH9iyk+bx7m1dx3lPnnqPy8QEyuOOKyTr5tjYMBzzC+fG+vrOWnkAY5yb6w5Tp4XGZopox6EGIkVDfowbUghcNVVV7lLLrkkZ09LECvWrl3rBgwYkHNetSRW0LBVq1a57777LqeN4ReJFSENrYuACIiACIiACIhAfgKNEiu6dmnnft4y3r2/bpQ39I8b0tUb/nhRmMFoYsLCGYf7bXhdENASQYF4ESZWbH34uGSGjsUzB/r908/p7fB8IC9CBPn5fPbMGPf9Kyf6+qx+ynDMMcP29/mfvvc/8eGxBUf572eN7+7302aEk3xiBXVMHHWgL8Nxf3xtnBvQp6Mva+ekZba9ElrC9asVseKOO+5w3bt3d0cddZRbtGiR++eff5Je5tFHH3X9+vXzb5ivuOIK9/333yf7bOWnn35yRx55pHv77bdtk1+ecMIJ7rnnnvPrv/zyi5s6dao76KCD3OGHH+7uv//+JO+WLVvc8OHDk++sYJyHecKdq1evduecc4678sorXdeuXX27H3/88STL9u3b3RFHHOFWrFjh240BTCrUBvZ/8MEHbsyYMW6//fZz48ePdzfccIM/hlVMG5csWeLP9fTTT7fNbv78+e6www7zx5o1a1bC799//3UzZ8705wyf2267zbGN9MMPP7jJkye7/fff340dO9Y99thjSX3hykUXXeS6devm83FOxhOx4pprrvFMDzjgAHf00Ue79957LykKm1tvvdVNmDDBHXjggcl2vASGDh3q6zzllFPcN998k+zj2lMuTEOGDHEMdSDR9ptvvtn17dvX9ejRwy1evNhzhjfJhAbup169evl8+c6La0ueDh06+Dow+kut49NPP3Xjxo3zTI477jj37rvv+rJpf7g3p0yZ4hnA784770zutb///jun/ZRftmyZmzZtWlIV9b/22mvJ9w8//NBx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YS5hYqpVhgWUkhAa8okNnBNv7tMS20s5Z8pyrqVcg7TjhNsYmoI3Q77E9eYTp0WLFrmPPvoo2cwMJEzdmZY3yVTCCvdeY+qgXKHEOXIvMpzFEgJMONTFtiM6lZO4FjbEJ61cWtsac45pdWubCIiACIiACIiACGSRgMSK/6u+QSkjXUyb6h6oJbGiGh0e8RoYNsKQhKZMoVhRreNghONNQEwH3rYz5IHv5glRreNkuR68YfBO2Lhxo2NIEJ4yiFO1mhAT8EiZMmWK9w4hOCzeQwTeVBIBERABERABERABEWheAhIrJFZoGE6G7oGWJlZs2rTJB6Vs6m5v/fr1SVyIah6LIJy49TPEhGEZFiizmsfIcl14jjDbC4LFMccc44eU1Lq3ALOYTJ061Q9NGjNmjISKLN+AarsIiIAIiIAIiECmCUisyJCh2lRv61VvdjxBWppYkeneU40XAREQAREQAREQAREQARFoMgISKyRWyLMiQ/eAxIom6wtVsQiIgAiIgAiIgAiIgAiIQA0RkFiRIUNVHhDZ8YBoqmslsaKGek81RQREQAREQAREQAREQAREoMkISKyQWCHPigzdAxIrmqwvVMUiIAIiIAIiIAIiIAIiIAI1REBiRYYM1aZ6W696s+OxIbGihnpPNUUEREAEREAEREAEREAERKDJCEiskFghz4oM3QMSK5qsL1TFIiACIiACIiACIiACIiACNURAYkWGDFV5QGTHA6KprpXEihrqPdUUERABERABERABERABERCBJiMgsUJihTwrMnQPSKxosr5QFYuACIiACIiACIiACIiACNQQAYkVGTJUm+ptverNjseGxIoa6j3VFBEQAREQAREQAREQAREQgSYjILFCYoU8KzJ0D0isaLK+UBWLgAiIgAiIgAiIgAiIgAjUEAGJFRkyVOUBkR0PiKa6VhIraqj3VFNEQAREQAREQAREQAREQASajIDECokV8qzI0D0gsaLJ+kJVLAIiIAIiIAIiIAIiIAIiUEMEJFZkyFBtqrf1qjc7HhsSK2qo91RTREAEREAEREAEREAEREAEmoxAs4sVHTt2dIcccoje5ksk0T3QiHtAYkWT9YWqWAREQAREQAREQAREQAREoIYIVFWsOOGEE9zEiRPzGqHTp093e/bscf/884879NBD8+bL0pv+Rx55xK1atapFnEuWuNdrWyVW1FDvqaaIgAiIgAiIgAiIgAiIgAg0GYGqiRXt2rVz33//vfv9999dly5dGhjv7du3d3/99Ze78cYbHXnbtGnjWrVq5ebMmeP69u3bIH9WjFGJFdkZQpGVe6pQOyVWNFlfqIpFQAREQAREQAREQAREQARqiEDVxIozzzzT7dq1y33xxRfusssuayA+IEiQ+vTpk+xr3bq13zZu3LhkWyFDrRb3SayQWNGc96XEihrqPdUUERABERABERABERABERCBJiNQNbHiueeec3fddZf3lHj77bdzxIdhw4a5JUuW+JNYvHixYzhIz5493bx58/y2hx9+2M2dO9ftu+++Sbnjjz/e3X333Y78J554YrIdw3DGjBlu+PDh7pprrnEPPvig9+Sg/AEHHJDkQzAZPXp08n3kyJFu2rRpyffOnTv7elauXOlmzZqVU3a//fbz7Rk0aJBv4w033JCUO/zww91tt93mj3vaaac5iRUSKyRWNFn/pIpFQAREQAREQAREQAREQATqlEBVxIpevXr5OBQY96z/+++/bsiQIYmBf9xxx3njHsYrVqxwGP94WCBEkNavX+8WLVrkCL6J4YeY8dNPP7k77rjDiwU///xzjtDw5Zdfum+//dZt2bLFLV++3Jf5+uuv3dSpU/36Pvvs4/744w/3xBNPJG3gGAsWLPDfu3bt6j777DO3detWd8stt7iXXnrJ7dy50/Xu3dvvp20kjvPkk0+6mTNn+u2jRo3yw1xefPFFL8xs377dt1MxKyRYNJdgIc8K/9PUHxEQAREQAREQAREQAREQgRZOoCpiBXEnMPzNYHvhhRe8J4V9Z0lATVKPHj2SfGnDQLp16+Z+++03Fw4NmTJlih9iQowL6kJE2LBhQ1IP2+6//363du1av41Anzt27PBCArExiJHx66+/Jp4Wd955p9u2bZtr27atz0+9CBBr1qzx302suPbaa3OOgceI5eGYiCsffvihAmw2YlYL+OlTPgOJFS28R9bpiYAIiIAIiIAIiIAIiIAIeAIVixUIDl999ZVbvXq1Y1gEH4QDPCM6dOiQGKSlihUTJkzwM4bMnj3b3XTTTf7DcBCSCR2IFZdccklSN0bvpEmTEnFi/vz5fjgKng/HHHOMGzt2bLKPvAgrDP0IjeULL7zQnwfbTKzo379/kqdTp06+DQwnCctpGEj5BnfIT+vl8ZNY4X+G+iMCIiACIiACIiACIiACItDCCVQsVowfP96LC3gyhB9m/jjvvPMSw75UsQIvCrwgEBPij8WkSBMrEEYY+oGYgAfEiBEj/NASBA9iaTz66KNJWz799FN3xRVXJN8xmM844wx/XNbTxAqEEhJDXUIDW2JFecZ2yE7r5bOTWNHCe2SdngiIgAiIgAiIgAiIgAiIgCdQsVjB0AsM9tjwvPfee90rr7ySbC9VrBg6dKiPf8FwEKsTrwaGduDFwbY0sYLtGzdudMuWLXO7d+/2U6NOnDjRtwEPi1A4eeqpp5JYF3YMAnS+9dZbvv40sYKhIgxPufjii5N2UXbdunUaBqIhHTn3hN1TTbGUWKGeWwREQAREQAREQAREQAREoB4IVCRW4Onw999/O7wrYsPsqKOO8vz69evn96WJFZQh0CWzazA7R5cuXXzezZs3++CYfN9///19nIjHHnssOUY+sQJviT179iSxK5hd5Pfff28gfjC7yJ9//um9KYhnwXeGrVxwwQX+GGliBW3FQ4NAnGPGjHHMGMJQlH/++UdihcSK5N6MfwfV/i6xoh66ZZ2jCIiACIiACIiACIiACIhARWIFU4gSr8I8HmLD7N1333UEs2R7PrECTwWEAhKzbZCXIRebNm3ywgNDQpjVg1lGrP58YgWzeZDCKUqZ6YNZQ6ysLREaOC4zl+AxwZATC+CZT6xglhFmM2GICwlPjNdee01ihcSKBveX3WfVXkqs8D89/REBERABERABERABERABEWjhBCoSK6pliOHdcNBBBzUw+Bj+EQbprNbxrB7Eie7du+cVWyxfvKS9Fuwz3qfv5cdhELPSmUmsaOE9sk5PBERABERABERABERABETAE6gJsULGaunGqljVNyuJFeq5RUAEREAEREAEREAEREAE6oGAxAoNYWjg0SJBpHYFEYkV9dAt6xxFQAREQAREQAREQAREQAQkVkiskFiRoXtAYoU6bREQAREQAREQAREQAREQgXogILEiQ4aqPB5q1+Ohua6NxIp66JZ1jiIgAiIgAiIgAiIgAiIgAhIrJFbIsyJD94DECnXaIiACIiACIiACIiACIiAC9UBAYkWGDNXmenuv49SuB4fEinrolnWOIiACIiACIiACIiACIiACEiskVsizIkP3gMQKddoiIAIiIAIiIAIiIAIiIAL1QEBiRYYMVXk81K7HQ3NdG4kV9dAt6xxFQAREQAREQAREQAREQAQkVkiskGdFhu4BiRXqtEVABERABERABERABERABOqBQIsXK1q1alU1Y7yadTXXm3gdp2V5Y0isqIduWecoAiIgAiIgAiIgAiIgAiJQkVgxZMgQN23atIKfDh06VE0siA3vL7/80l1yySV56+/Tp4+/wv3798+bJ64z3/epU6e6nTt3VlxPvvoLbZ80aZI744wz9sqxC7VL+5pfCJFYoU5bBERABERABERABERABESgHghUJFYgVLzzzjvJ56+//nLffPNN8p19Xbt2bTIju6WJFXhuzJkzx/Xt2zeH2cqVK92jjz6as01CQfMLBbXAXGJFPXTLOkcREAEREAEREAEREAEREIGKxIrYeNuxY4e74YYbms2obmliRevWrf0dOW7cuGZjGF9Dfa9tEURihTptERABERABERABERABERCBeiDQ5GLFfvvt5+bOnesGDRrk5s2blyNmHHbYYe7WW291y5cvd5deeqlr27ZtYqSPHDnSTZ8+PfmOEX3WWWflDIdArCDP1Vdf7R588EF33XXX5XhypA0D6dSpk5sxY4bDW2HmzJmuS5cuyTH22WcfXx/7rrzySkd5M95tGAheD7fddps/p0MPPTTZb/nGjBnj7r77bnfvvfc6hm/YdlvmO+eePXt6Ptx0Dz/8sK9/33339eVPO+00d/bZZyd10f5hw4a5KVOmuKVLl3om7dq1S/ZzrP33399df/31ngvncvzxx3tO1g4ta1uUyHd9JFbUQ7escxQBERABERABERABERABEWhyscIEA4SFJ5980gsEGGIjRoxwv/76q1u7dq03/j/55BP32muvuTZt2nijGw+Nbdu25RjgDIVAlDBDjjp//vln9+KLL7oFCxa47du3u88++8wdcMABPo8d22JWIJxwHPJT/6ZNm/x3i6uxbt06XwciBoLBjz/+6Lp16+brQqz4/fffff5Fixa5LVu2uH///deLBtaeq666yudZvHixu+uuu3zb7rjjjqS9hc6ZtlKOtH79escxOnbs6M4+9UAAACAASURBVMuuWLHCc7LjcN5fffWVe/75590DDzzgfvrpJ/fMM88kxznooIPcF1984d577z13++23uxdeeMH98ssv7qOPPkryWF1aZku0kFihTlsEREAEREAEREAEREAERKAeCDSbWHHttdfmGMpvvvmm9wowYxkhYffu3e7iiy/2+UoVK1atWpXUi+iAGIFwQb2xWDF//nwviNisHgy7wIC/4oorHNsQIyZPnpzUR0yOo48+2n9HrNizZ48bMGBAsv+NN97wogTHQiChPN4fdk6jR4/2ZUwsKXbO+YaBpIkVa9asSY4zfvx49/fffydeJQgdCDft27dP8iDyfPzxx8l3a6OWEivqoaPTOYqACIiACIiACIiACIiACGSLQLOJFWawYxwzvAGvhOHDh+cYz6tXr3Z8yFOqWBHPBnLzzTe7t956y9cRixVbt2713gg33XSTsw/eG8uWLfP5H3vsMR8glOEqDOcwUYP22DCQ0LjHewIvDbZNmDDB/fHHHw7BIcyDB8SFF15Y0jmXI1aE583QFtKoUaP8sd99910fqDNsB0Nl5FmRLWEivH62Ls+KbHWwaq0IiIAIiIAIiIAIiIAIiEDjCOwVsaJHjx6+tQMHDswx7BkG8dRTT/ltjRUriGHBUBCMu1is+PTTT/1QlFmzZrnwY9OCEjMDUWLjxo3eSwJPCNpKXWlixZ133pmIFcSP+P7773POh3Lvv/++j5FRyjk3VqzAo4RkYgUeFMSrMAOXpcSK7AsVXEeJFY3r6FRKBERABERABERABERABEQgWwT2iliBxwIxFM4999wcg5qYFTaEg4Cb3333XY53AyJCHLMiDsLJ8Ihnn33W1xuLFQghCCKhEX/kkUf6qUKJlUGwTfOmYMpVPBRmz57t8xcTK4YOHeqvvIkbHKNz585e9Dj55JN9vcXOuVpiBR4isArPkylR5VmRfcFCYkW2Oli1VgREQAREQAREQAREQAREoHEE9opYgRHNUIvPP//cDR482OEZwJt/4i4wWwb7MfoZKsIMH6xfc801/gxjsWLXrl1+yAZCA0MjiCuBOEAdsVjBlKDElSDGA+IEM2QQ5JOZSijPPtrFrCB8L0es4HibN2/2IgEBLhE7CNJJDA2b5aTYOVMHXiHMNoLQQRvYlhazIhwGEntWIJzAcsmSJW7s2LHey+Kvv/5SzIr/k1jRuG5CpURABERABERABERABERABESgeQnsNbGC4I9M7/nnn396UeLrr792EydOzPEGYCgIMR8QLfAUYPaLWKzAi2Dnzp2eGrNiME0nBj6fWKxgG0Y++RA1CEIZemZwfI6HYc9+jkk8CMoV86wgD6IKM4z8888/vs3EyOjXr1/SnlLOmQCjtI9kwzrKFStoC8E9iaeBdwqeJswawuwg7NMnuwzkWdG8HaSOJgIiIAIiIAIiIAIiIAIisHcIVFWsaIwRjNcBngj5yjI0wjwM8uXBSwKhwIZw5Mtn28ln05vaNluyr3v37kWPafnTlggchdpc7JzbtWtXkEnaMcNtBPucNGlSDlOElyeeeCJnW1hG69kQMCRW7J2OUkcVAREQAREQAREQAREQARFoXgJ7XayQkVx9I5lYIHiHnHnmma5Xr15+CA0zlcQChthXn31TM5VY0bwdpI4mAiIgAiIgAiIgAiIgAiKwdwhIrGihwyJmzJjhp2FlCM2OHTvctGnT5FXRAq61xIq901HqqCIgAiIgAiIgAiIgAiIgAs1LQGJFCzBgC73NZ4hMof3aly3vCokVzdtB6mgiIAIiIAIiIAIiIAIiIAJ7h4DEihYuVkiMyJYYUex6SazYOx2ljioCIiACIiACIiACIiACItC8BCRWSKyQ50WG7gGJFc3bQepoIiACIiACIiACIiACIiACe4eAxIoMGarF3rprf8vyoki7nhIr9k5HqaOKgAiIgAiIgAiIgAiIgAg0LwGJFRIr5FmRoXtAYkXzdpA6mgiIgAiIgAiIgAiIgAiIwN4hILEiQ4Zq2pt2bWv53hThNZZYsXc6Sh1VBERABERABERABERABESgeQlIrJBYIc+KDN0DEiuat4PU0URABERABERABERABERABPYOgZoRK1q1aiWjOUNGc/i2X+vN590hsWLvdJQ6qgiIgAiIgAiIgAiIgAiIQPMSqFismDRpkps2bVryOfPMM92AAQPKEh6mTp3qdu7cWVaZ5jKQOb8xY8aktu3CCy90vXr1St3XXO3TcZpPKKgF1hIrmreD1NFEQAREQAREQAREQAREQAT2DoGKxYrXXnvNCw2bN292fBAdSPfff3/JRnwtixWc3x9//OEOP/zwBufz119/uVNOOaXB9nxGLaIHAke+/dpeX8JDY663xIq901HqqCIgAiIgAiIgAiIgAiIgAs1LoCpixeLFixMDnOEc5557rj+LE044IdleyDCrdbHi77//du+8845r165dzvmUK1bceuutbsuWLTl1FOKifRIv4ntAYkXzdpA6mgiIgAiIgAiIgAiIgAiIwN4hUHWxAuMKweL77793M2bMSAzzTp06+e8rV650M2fOdF26dEn2pYkVhx56qLvlllvcsmXLvDdC69atk/wcAyEE743Zs2e7/v375+w76KCDkrIIJ/vtt1/O/mJ1hwYinhX33Xef++qrr9ztt9+eU08sVnDe559/vnvggQd83sGDByf5OUfq+vrrr93cuXMdw0vsOJQ777zzfLl58+Y1GEZz2mmn+X1z5sxxw4YNS8pZeS3rR9SQWLF3OkodVQREQAREQAREQAREQAREoHkJNIlYccQRR/izIH4FhjRiwSeffOJefPFFd8MNN7hNmzb57x06dPD7Y7Fi+PDh7qeffnIIG7NmzfJ516xZkxjpU6ZMcb///ru766673KpVq/wwDYsr0bFjR/fll1+65557zh+LoSmvvPJKUrZY3bHhj8CAgED9e/bscSNHjkzqisWKJ554wosa5F+9erX7888/E1Hisssuc1u3bvXDZBYtWuQmT56c1LN27Vr36aef+nNdvny5++WXX5wJHdOnT/cs8MpYsGCBP28717it+t7yRQuJFc3bQepoImAEli5d6o455pjk8/DDD9uuzC75nxaeE/9bspaqcV3uueeeHA7r1q3LGoa90t6WcP/sFXA1dtAvvvjCv+DjmdqGctdYE9UcERCBOiZQFbHi7bffdvPnz/cfDO9ff/3VvfXWW659+/beIGcfRj8eBBjUeEl89NFH7oorrvDfY7ECox6D34zvnj17eqFg4MCBfhtixfjx45P9PKyYmIHnAemAAw7w+/HouP76692BBx7ovxer245pSxMr+I5Y8Pnnn7vOnTv7ukKx4qSTTvLiBG21snhCIJyYV0jaMJAJEyZ4McLaS1k8M+DI+rPPPuuWLFmS1Ml5n3766cl3O5aWLV+o4BpLrKjj3lqn3oDAe++9573S8Ezjc9NNNzXIYxsWLlyY5GXoYr50zTXXJPmo89tvv/VZqbtt27bJ5+67785XRWa2M8QxPKeuXbtmpu3W0GpcF7xAQw54bSoVJ1DL9w8vqqxfYHnHHXcUP6E6zMFLte7duyf3/5FHHpkZCi+99FLONcamKCXt3r07pxz3By8JSfF9wz6eyUtJP/zwQ4N6ee7Pl5588kl38cUXe6EUG2Xo0KHunHPOcQ899JD7999/8xXTdhGoOwJVESs++OADPySDeAz88+LHxz9+M6ARCJ5//nn/IMmDBZ9t27b5IR7kCcWKfffd1/9IeViwvCzpSBApyN+mTRt3wQUXOB448bxAFPjwww+TfQy1QEDhAcQEDsqVUre12ZahWEHMCtqNNwf7Q7ECQQZvDivHsm/fvv6GYsn3NLGCcnhVhOdKB8Y2yuCRgRcJPM444wxn3ijhcbReH0IF11liRd310TrhAgR4OKRfNkOTPp6AyGmpR48eST7rm+N8PMSG9SEi//PPPz4bfbQdh6XEipje3vlejesisSL32vE7eP/995PPd999l5vh/32rZbGCF1jh75UXPUoNCTzzzDM5nGD27rvvNsxYg1sQknkpGl7nN998s2hLER/CMqNHj07KxPcN+Q4++GBv2ySZ8qxgk4T1sh7WbcVoN8O747zhdzze8EhXEgERcK4qYoUF2OStDD9C4kiEBjSGNwY4wkL4wfgmXyhW8EBJ4kEwzMv60Ucf7fNv2LDBbd++3e/H2EfIMLGC+mgHDzBvvPGG98jAXRevjlLqDtvNeihW8B3xg4dh2h6KFcTWMG8Iq2P//ff354JayrY0sYJyCCDxufJ2z+oZO3as4xx27drlY15oGEj9iBN2D9hSYoW6bRHIJcD/hfAhj7dtceL/Q5iHdf4vxYn/LWE+hutZqoZRbHXVyrKWjc1SGVXjukisyKXNy5Hwd3DjjTfmZvh/32r5/omNTokVqZfQ/fzzz36otl3vPn36JAJteona2nryySfn3Ks8OxdLCAh2vixXrFiRFInvG8uHDVMs8axv+W0ZixX8Zo499tgG+Sx/uOR/G3aGkgjUO4GqihUYVBMnTvQKpAkLbHvqqae8F4QZXCxxNTOPg1CsQFRAfIiHOhx//PFehOBNF8nKUhedk4kV++yzTzJMg31MOYq4QKyJYnWH7bP1WKxg+5VXXul488B4TZu6lIcdVFAb6kI+goDyVs6GjaSJFZRDrLDjsWQoifEjECmdF9tZEtOC2B9hfq3Xj3ghsaLeu2ydf0yAYX7hA16a2+29996bk4f8CMVxuu6663LyEVzZUjWMYqurVpa1bGyWyqga10ViRS5tiRW5PFr6NwReYsxdeOGFfgh3ls6Xl4Rh/8+QFp7N8yWGcof5eT63ISCUySdW4AlRKOGNEtZr67FYEfdX5GO4+nHHHdfAS4R9LcGDrxA37ROBUghUXazAcCYwJp4PNmRh3LhxfigDyjZDOBAeiGsxaNAgb3SHYgXliVdBTAtm+UB8uPrqq33sB9b58dKxXHXVVT4WBMY8b8NMrOBYCASICMSKoA6GUVhgzEJ1pxn9aWIFggRDPkgmViCiEBSUmT5wRe7Xr59jPDUsrF5mJkHkwKWMD9utHJ4VuB8jwsCO4R/sZ2gNAUnxFoEd7msSK+pHnLB7x5YSK0rp1pSnnggQ18ceDFmeeOKJDU4fT7gwD+sMK4wTAZjDfPTFluKHzJbwECmx4r+rK7HC7vL/lhIrcnnoW+0SIOYGz9Fhv71x48a8DcYGCPMypDxM+cQK7A+8m/MlXpqG9dp6KFZgm+BxbftYXn755e7HH3/01eKZzvCPcD8ikpII1DuBJhErUCqZ6tOGh2BoXXLJJd6YR/HkAZBZLswAi8UKxqARVJJOiA+CAUMhLD/BLL/55hu/Dxc2DHoTK8iD4f/bb795kQIXqjvvvDMpW6xuO4Yt08QK9iE2MF7axAq2jRgxwntXEBiH86TTM68K9iPe2Hi6UHBAUcUrgzJ0hrzNQ5igDNOsUoY6EV1gx2wr7NOn/hhIrKj3LlvnHxNAvDYhm4c83lKFrrM8IHbr1i3nAZB8vIELg5ghoIfjn/FwC1OaWEHd/I8gij6iOn03InUpiQj8zCBFzCVmyWKoH//HKk38v+D/Jw/P1Eub8o1BzydW8ND86KOPOjxN8FTh7WW+WCBhexHjiU9FMGp4IK7TnvB6hPlZR/h/+umnkw9Mw8QzQLif/51hSrsu4f5wnYDXnAtc8MhZv3699wRtrFjB80fYNu6FOPGsEubJdy2o67HHHvO8CRTIVOl85/9+sQSj119/3eFBxIsclrSllGsW1k2cCtrK8UOD6ayzzkrOgXhglqp9/2C0cf8QDPPaa691Dz74oL93w9+pHbvYMjY6Kx0GwjMtv1eGxHDPcR/t2LGjWDP8fmakYxY4vHJvueUWH0CR33++RJDH8J7h3iAWG561XJtQKP3+++9z8tozJn0J3mPcD/weeemVlnjuDI8F/zBVWn9YF79t7n/OAxb0fdy3JI4btoN7q9SEPRHer+eff37eogzlDvPG/Ul834R5Q+7hAejfDjrooJx6rVwoVhC/z7azTBNAeMEZ5hkwYEB4KK2LQF0SqFisKMdgxiMBBbTUMvxg8ShIy09dRM81oz7OQ1keNukM4n18L1R3Wv5ytnGO+Y5LPbQ7bT/lbOaQ+HhwoDOMt+t7fQkWEivqsp/WSRchgOdc+ICHgG2JmanCfeE6waEt8bAc7ovfuMVGMYY8XhxhGdYRPBDMY6PbjoMBiZAQBvIM68DdGAOh3IThxDDMsK5wHWEdESJMacYm47dt+GFYHk/IfIY2deYrRx0I7PnKxm9FYwObNoftOOyww8JT8IZjuD/NoOA8MdrCfLbOkNTY8wbPglISwpTVwxLPnDgh+oR5CEAeJ8SFfMYOolo4pj4uiwGEB2l4DFuHFbG7Sk2x0Wf1hEtmK7BUzfuHwOVMcx8ey9bxmI3vXWtDvmVsdDZWrEAIQsxK+72yjd8yedISQ3wxVu08wmXHjh39vRvf79QzatSonDKIj+Eb+VBIfeGFF3LyMsMcQmF4LFs/9dRTG/QtiL22nyX3W5gqrd/qQmyJ+2k7LvdUfP/jqVxqQqCxuljSf/HCMk5xPl4GxkJYfN+E9Q4ZMiSu0n9HxArzheuhWMHLRgQk+1AuTohKYXniWyiJQL0TaFaxQoZ1fRnWut7Vv94SK+q9y9b5pxG4+eabcx7wwmkKeatoD3+DBw/OmaYP7z9LBIa2fCx5qxumWKwI86ath/EurB688TCO0/KH2wgGzVvuUhMP9sRnCutIW2dq7/AhPjY208qE2ximmGZcMaQmzJe2zvBIDIE4NbVYQXvzGYxp7WRbc4oV8ZCLfG165JFHYnT+DTUvPvKVYTv78SApJVUqVhRqB/vy3T/ESihWFmOWeAOlptjobIxYwe8qLWhi3FZEKjwUwoS3bGyAx+X4jrAQp1isiIWSQmJF2jHCbXjJhKlcsSKsK209rp9jIVSWwiKsrxyxgmPE/WpaXxMP1cCzI07xfYPgF7Yr9CyysohAlifOH4oVlr/QMv4t4GGkJAL1TkBihYZTyFsjQ/eAxIp677J1/mkECBBnD4ss8TCwxLBB24c3BLGD7HsYNI1YSradJUMGwpRPrIgNCasDD7p4+AOxiGy/LXm7x4N2XA9vIeO3fmF7wnWGalh9LPFkYGw2Qx2oP9zHW3xLhcSKuD1WB0NewhR7DpCPc2fsNQKFlWPJ2+F4GsymFitCsSpsCwZfOOwn3NdcYgVv5HnDbseGOZ4XMI69PRh6GnrrMIyAYaZWliVvYS+66CIfoDvcnk8kCK8j69zjcAnf4lMPHg9s58MYe0vVuH/WrVuXcw5cE36zDA+m3eF5hF4d1oZ8y9jobIxYwVCF8PhwOfvssx0GecwovmdiwYFZNphdKDbaueY2dMPOJS4btoF1roOl2PMhzJvvN4y3maVKxIpS6uc4aWJh7969/XaG7YVttvVyxQp+M1aWZfg/gDYgJuE1Ynlo+2effWYYkmV83/A/A89mK8c9EaadO3fm9CNxX1yOWPHQQw8lx+F4/L7L9SgK26Z1EWgpBCRWZMhQladC9T0VssZUYkVL6Xp1HtUkwNvz8KGXh0sMO4ypcEgD8RFwqbcHT2JZkC82GtPGCcdiBQ+7xEMi1gXToMbj/DlGGIMCAyE0jnkQZYy2JYYU9OrVK2kb5XGNLyVhiNk5xcflgZx4Srz95RM+bKcZm8xExZtQmBIzgWDRYd0Ya5Y4dwyncD8P6yayEIOAqbbD/bw5DFNTihUYPHH9tMfiBdA+YgiE7WM9NjzD9obrlQ4DITZBeOzYGOees+vGMoyHQuC9sGw8/CUeChB6EYXnkLYee3uUOnUp7Snn/iEeB0arnQe/YZhYwguImF62n2W+4URWxpax0VmuWMFxwt8rfQKGqSWGXYWCBWISvycSHiAIPPZBCLV9LBliFp5TLACmiRUYza+++qq/B0KvrzSxAk8nYqXgyXXPPffk9I0cd+nSpXYaPmB92JZiw0DIW079TPkZ1s81Dr2E6HvT+s5yxQquTehlxLULhVGCbobt4Jqkpfi+wfuCmHtWFiE2HPYTiiScG32+5WVZqlhBoOiw/ZRFvFASARFwTmKFxAp5VmToHpBYoW5bBNIJxPEjEAdCY5C3/BhHGKrhwyRvNQlGGG4L3x7b0WKxgje/YUL0iN+aMm23pXiYCfXFCXEgbAfuxaWk+M0lrsMYK8VSLFakvW0kMGDYJoxRS/H4arxB4kRgwvAhHAMvTLGYEA8zqSRmBcMfwrYfcsghqQErEWDCfM0lVsT8cCEndooZtiGncB1jKTSk08a1I8SE5xQLIWF98XpjxYpy7x+CG4ZtJPBpnGJjt9RrExud5YoV8dCyZ555Jm6aj1cRtj+cPahB5mBD2C9RHm+YMMViBcZyvhSLFXhShR44lDv99NNzOIdDC8r1rCi3/tibjHg+aQmxJ2RZrlhBneFwDOoKBbrQo459oeATtie+bxAr4uv1+OOPJ0XC4Scm4oTnUYpYgcARx2uZOXNmcgytiEC9E5BYkSFDNWteAGpv9T1BJFbUe5et889HgDgV4UPiwoUL3W233ZZsO+GEE5KiYUBCvCOYeSEsGz6MWqFYrIjfZJMPgzCsB/HBUuzWH74ltzy4KoeGPV4NpaR4LLa1AcOCyPi8ocMLIk6xWIFHSpwwwKw+lgTatIQxEO4LjQPLw5LZvMJ8CBiWmlKs4NqGx0UwSkuNnQ2kUs8K3vwyS1jYRtZ5Q4sHCPdcmicBgRvDMlxnAqjGn/BeCkWmNAbhtsaKFZXePwwdis8hHp4VGtphm+P12OgsV6yIf68MTYnbFhqqXI8NGzbkNAOvJrwG8GxCyOS3wxCS0LuLcogJYYrFirQ4CZY/FivSBM74etImS+WKFeXWH3tWvfPOO3bonGXsodUYsSIOdIk3Eom+LxwyhbddWn9I3vi+sbgWeNbYb+7kk0/29cYBO/HcQyS2fCxLEStoZ1gG0UNJBETgfwQkVkiskGdFhu4BiRX/67y0JgIhAWY9CB/4iEcRGslh0M3wbR9GSBjXgrfDabNxlCJWxMHRQrEifNilnUxHmJbCcfq0pZSpK3H3DgWYkIOt8+aOKQPDVIpYEXuihGLFpZdemsM8NtbsWHihWDtY8lBvqSnFitB9m+MyPWxa2ltiBW1B9Aq9JEJOto7XUOgpgxu97St1GXu0pHGwbbFxW+owkDSxopz7p5RziQ17a3O8jI3OcsWK+PdaStvwQrKEcJcmRKXVE59TLFbkM/A5ViliBcPJwuNWW6woVD9CWnjsXbt2GaKcZTXEirQpRAl0GseCiL3iwobE942JFaGgze8Vj69w+Artx6OlXLEiFjwZFpXvf0PYTq2LQD0RkFiRIUNVngrV91TIGlOJFfXUPetcyyGAVwLGkj0YE48iDPAYBrFbu3Ztko83bqELLtH/01KlYgVvtq1tLMPx1OHxwiBwtD+eZSDMG64jPKxcudIVM7LC8eKVihW85Q7PKRRnwrbFHicMu7HUlGJFHLchFmusDXtTrKANH3/8sUPoCj0hQq6s8xaf60VCFAr3s4833oU+YawRO+98y+YSK+L7By+KQufAPrylSkmx0VmuWBH+XjFOi7WL/TbrCsNbYgEKzwpm7AkDqto1bMliRTxELc1TiOtZDbGCeuLfPDFpmM7VWLMkIHO+FN83JlbgDRZeU2Lz8D/G6rUhTOWKFUw9zG/TPvz2lERABHIJSKyQWCHPigzdAxIrcjswfROBkABu2vbwGC4xiMNx3Hgi4LUQ5rF1DNe0VKlYEQfVe+WVVxocZvfu3TltOuqooxrkKbaB88Qg4KGXISBhgFHOcciQIUkVlYoVsTs7D/BpifMwviyJp2ApFiss+KXt//rrr3PKEtchTIWuy5IlS3LK4lGTlqolVvAWOU6x8cNsH/kS9yVBVzknppkNmbGOmzuJgK7hvvBNeb66y9neXGJFfP/kE7vKabvljbmXK1bw2wkZ5xMX7XjhMvyt08/wZt+CzjLsIvb4acliRXyuiAdpiemaQ96NGQZCvXihhPUggoQiA/2HXYu0dsT3jYkV5A1Fj9hrxoIplytWpLVB20RABHIJSKzIkKGaNS8Atbf6niASK3I7MH0TgZAAke/DB1VbZ+aEOIVvTi0fy7RAepQtZBRb3YWGgcTxE9LaFMbYoC3nnXeeVZ13yTAR3hTaJ/QgoRBGVjhemze7lioVK3grGLLDhTkOkMkMBmEejIcwxcNX7rvvvnC3n341LF+OWBEHcOTcMfTDxIwTsTBQ6tvNWEihnWa0cAyEo3g8eihWkNeuG8t4+BEzQITnbkOZqDe8pjDlPMKEKzn3D/cZn3xGYljG1pctW5Zz3Hz3YaX3T9rQLWuDLYnXYOfAMi2ejOUNl7HRWa5YMX/+/BwG9C1xQoQI22bXPoxlwf0dJ6ZFDq9rSxYrEKDCc0U8DWdB4l7GKyHMw3pjxQpYI8jG9dn3fIKqXaP4vgnFinzDr4i1YqlcsYL+kt813mfc2/F011avliJQzwQkVkiskGdFhu4BiRX13F3r3IsRiAMP2gPqAw880KBo2gMybvi8+UxLlYoViAbhVIe0jTfijKnG6EXMCN8A8kYWMaBYYphIGEmfcqExwNhqAjYaCwwpS5Uam7yhjMfX4/aNYIKXwLp16xrMkBJP0zhp0qSkbbQRT4vrr7/enwN8QibsL0eswBAKDUfK447P1I0YwcSwiN3UyVOqWMH5x54rDMPBsMVIIxAf9YWfUKyIA5TCMjRW4sCpDF+yxGwBYb0MQ+Bak/BOiWc4MaHDyhdaElMkrJthUjB5+eWXXSgmVeP+iacmZRYOBDjY4iFEjJSwLVu2bCnU9GRfbHQipE2fPr3gJ5yBgakww98rQ8y4ptxTGJiImuHviv02pSXXwtpMn8LMRGGKlgSSyAAAFjJJREFUr3tLFiu4jsxWYzxsye+S3wdTgdq2cFmJWJFPtKZvZFrZQim+b0Kxguse3hPW3nvvvTepslyxIp6lpJiYkhxIKyJQRwQqFit40Jg2bVryIdIx/6xLeauO6+XgwYNLyltKfdXK06pVq+R8ODceLjhPHnLKOQbqOS5wlOGfGm/N+KdfTh3KW33vhCwzlVhRR72zTrVsAjwY00/bQ6Qticofp9ggI2/a1JtWrlKxgnp4qLU2FVvyv6PUlCa8DBw40PE2OYzjwTExgC1VamxSDwZlLCjkO7cjjjgiibtgbcD4zZc/bXs5YgXHiKe+TKsz3laqWEH9PPPE5Qt9D8UKBKxY7OA7M9fwbBTWwzMEBrQlPCn69OmTk4f84Th6K8+2cAYWqyPfkrwYdlY+XGL0W2qq+4f7Kc0oxOjlN15Kio3O8BzyrSP6hSkWFSjHdQhFCqsLgc0SQVNtO0vOB1Fs8uTJjt9luI/1lixWwATRNe16xhzC75WIFQTxTIv/QsDlYim+b0KxgrJhcGbay3AQhFlL5YgVCF9xDBN+00oiIAK5BCoWKwiUxT9Q5iHmY8o+boSFjEIEAdwxmc++UL69sa9Nmzae0kcffeTPCSWfaY5QVXnQKLVNoViBgEOHhntaqeWVT0JFfA9IrMjtwPRNBGICsfEYG7eWn7e3YQBOHjx5q5svVUOs4OH0qquuymsI2sM6b2bLeVjHaEx7i2/12RJ35XB2kWoYm/B68MEHGxjddkxbIlR88MEHDfDiGVLIbTuOaRFfz1KuC9c1n/FN+2LDphyxAi+GcEiGna8t4/aHYgUwNm3a1MBgsbK2pO1p8RzwYIlnW7AytsRQZsaIclM404HVxbLaYgXtKuX+YagLhmCpKTY6w3PItx6LFfZ7zZfftjNbSxgIl/VwJiLLl2/Z0sUKrhnP+3HsGuMxceLEBh4WYT9V6jUP8zEblNVvy9WrV4dZUtfj+yYWK15//fWcepniNkzliBWUi3+/xF1SEgERyCVQFbEC9dmMKkQIizrNw5Ntz9LSxAr+gVi7UU+Zlgo3PxRi215oGYoVhfJpn0SJUu8BiRW5HZi+iUBMAEPTHk5Z5guqSLkxY8bk5MXNPV8qxSguFLMirPf55593zDoSeiRgkDK+Pd+MFWH5tHX+NxFQMn74hQEGM+7FsQBSLbGC9mCMMAVsbLgTOI9ZHxD78yUCbsYBDREQMDh4aRBez8aIFRyXoTG4nofMeUOOh+eVV16Zc4xyxArqJlZBHJsCL0qGFcRj9mOxgvIMX5oyZUpO2+ycMYQL3ZfEpsALJ82jCNErTSDKdx3C7RiLTFkaexHgGWCp2vcPAQzj4yEo4g0Ux/OwNuRbxkan8Sy0jMUKqxsvLAzt8N6hHvLz/BsO3bEyvODiNxd7FPTq1atB/Jt6ECvgQh9FDBuGgjF9KNcVtnjLhP1GKIgZz3KXsUcVv8c4rktanfF9E4sVlAm9YzhOmMoVK5599tnkHuEei2MOhXVrXQTqlUDVxQozujDU+ZHzHeWRIER0yEytxsMU23mA4U0P67xt4p+ylWfJQwlDJ/gHwfd+/fr5To7xaLjrIoyE+XnQmzt3rj8G87/z8Md+hnDwPcyLIME/EsqE21lPEyvY3rdvX3+f4M7Hd47PAxbjoZmDOR7SEooVuHbSNh4a7Xhsw3UQJrz5sX28geK8rf2WnyEpuPXady3rT+SQWFGvXbXOuyUSwIDn4RQPRYzOaiQe/HlgxtORN+o7duzIeetbjWMUqoO30QgMeAyYp2Wh/OE+4oUQdJG2FxI3wjLlrmNEYjDxYb2aiWEdBMp8//33c2afKfUYGFMIHxhwxDmIxaVi9fDMgRDG0JxqnRvXgTYRrJR6ESiaMnH/cDzOgyld04SApjx+obrt98o1hjVtLZbIg/cNQyHKFVyK1Z2F/bDi2dc+/DbiBMtQREL0rKeEMEjsIiUREIF0Ak0iVmB04wbHGy0M6lWrVvmhIowb5o0FAZPYzndcDVlHaWXKodAAR5Rgeje2ISrwIENALPIyJo3o1pafIE38o2dqL6I40/mhWLIfsYL2mBjANrw++GfOeDGrw5b5xAre8pAsJgfHYmznvHnzHO5lqMYcy+qhDRaz4pBDDvFlUWTZzzhizp8HVTpxltTF2FKUeP5Bh54d5Gcb85Bb/VpKrEj/WWurCIiACIiACIiACOxdAjyHh0IEszCFQ2YQV/E2CvPgxaYkAiIgAkagKmLFxo0b/bQ7TL2D2yDKKWICUX4xqBEriHaOm1doYIdixeGHH+7bhFcBeRAMqIMps/iOGGGGP98Zl4wY0Lp1a78fYx8PB6sfLwdcJ3FBpS7e8OByZvuZIgh3W/seLk2sIEgS54R7Juv21gSPCpRfxAnGUVpZPEnCNhUSKxYsWOA5mfcEro5Elzaxg/Zt2LAhqZvYHrjZxt4kdmwt60O4kGeFdV1aioAIiIAIiIAI1DIBnpPjIUp4STMzy+zZs/2zfShU8ExdrkdRLZ+/2iYCIlA5gaqIFbt37/Zue7juEXwG7wki2poBjVjB/MT23ZahWME2AllixLOO0U6HRawIy88wEbwqGHKBgEDCWwJDH3UWQcPyxkvKMC6U7Qy/oANljGmcj+8mVuDpwDmZCyRiBOMpyYP3Bq6aYXkbJsKS7YXECsQVhJ2wfLjOcA/cLc0bBNfYWbNm5c0fltV6yxUuJFZU3umpBhEQAREQAREQgeYhwLCuOBZJKFDYOkO+w2mXm6d1OooIiECtE6iKWBEG2EwzlEsVKy666CI/XASxgPnEmQvd6iO+BaIIQy4w8hE6SBjzeE+QbIiFlQmXxMkgEWALDw0EiHB/uG5iRTgMI9zPOrOd0MZwO8M3SAROY3shsQIvCRsCE9Zh63iMUJ5YHgyBwW2OYE62X8uWK0gUurYSK/xPTH9EQAREQAREQAQyQoC4PKNGjcoZ7mEiBUtiwTEUXEkEREAEYgI1JVYQP4I4Egz9ID4DY9vMcNu+fbsj0rp9Z6ozEmIFQyOIZ0GwS9uPQstc5XhR2DaGhSxcuNAH70L8sO3xshSxggjiBMQJh2VwPIIp2XCXQmLFU0895QNrhsfGMyT0SMGTg84bgSYcEhKW0Xp9iRYSK+IuTN9FQAREQAREQASyQAAvYYZg89KR2BTEe8PTGO9oJREQARFII1BTYgWG94oVK3xUdBuyYcY4cTEIrsmwEFRYC8BjwyQY5kHEZab+QaAgxgQChg3boB5EEIaWMASEQJZWd7wsRazguNRFcEyGoTAG77333ssRIAqJFQzzQJCZPHmyPydiY5DCAJpMcUUHznEslkXcVn2XWJH2w9Y2ERABERABERABERABERABEcgygZoTK0aMGOF5Mu95aIgzjIOpvBgOwTQ/TIdEMrGCOdkZNoIAgIFPvIlx48bl1IHQgeFP8Mqw7ni9FLGCMrQV7wqOR7uYn9m8KthfSKxgP9Op0h7KM5MJ3hpxW5i+i+CgtCnep+/1JVRwveVZkeXuVm0XAREQAREQAREQAREQAREolUDFYkVzG8xM4Ykwke+4zK7RvXv3nOEZlpd9zHONV4Ntq8YSwaRQmwodg2EkNmNJWj6Gf+A1krZP2yRWlPpDVz4REAEREAEREAEREAEREAERyBKBzIkVlRjoDLXA28GmO62kruYoi4iBxwZeJc1xPB2j9sUPeVZkqXtVW0VABERABERABERABERABBpLoK7ECgL5XHfddZkx/C+//HK3bt26zLRXYkfTix0SKxrb1amcCIiACIiACIiACIiACIhAlgjUlVghY7rpjWkxblrGEiuy1L2qrSIgAiIgAiIgAiIgAiIgAo0lILHi/5rWuJTxLr7VvAckVjS2q1M5ERABERABERABERABERCBLBGQWCGxQsNMMnQPSKzIUveqtoqACIiACIiACIiACIiACDSWgMSKDBmq1XxDr7qy6fEhsaKxXZ3KiYAIiIAIiIAIiIAIiIAIZImAxAqJFfKsyNA9ILEiS92r2ioCIiACIiACIiACIiACItBYAhIrMmSoyhsim94Q1bxuEisa29WpnAiIgAiIgAiIgAiIgAiIQJYISKyQWCHPigzdAxIrstS9qq0iIAIiIAIiIAIiIAIiIAKNJSCxIkOGajXf0KuubHppSKxobFenciIgAiIgAiIgAiIgAiIgAlkiILFCYoU8KzJ0D0isyFL3qraKgAiIgAiIgAiIgAiIgAg0lsD/h/GjjxjoHsjOPdDYH7vKiYAIiIAIiIAIiIAIiIAIiEBWCMizIkNv1TV0I5tDN6p53eRZkZWuVe0UAREQAREQAREQAREQARGohIDECokVGgaSoXtAYkUl3Z3KioAIiIAIiIAIiIAIiIAIZIWAxIoMGarVfEOvurLppSGxIitdq9opAiIgAiIgAiIgAiIgAiJQCQGJFRIr5FmRoXtAYkUl3Z3KioAIiIAIiIAIiIAIiIAIZIWAxIoMGaryhsimN0Q1r5vEiqx0rWqnCIiACIiACIiACIiACIhAJQQkVkiskGdFhu4BiRWVdHcqKwIiIAIiIAIiIAIiIAIikBUCEisyZKhW8w296sqml4bEiqx0rWqnCIiACIiACIiACIiACIhAJQQkVkiskGdFhu4BiRWVdHcqKwIiIAIiIAIiIAIiIAIikBUCEisyZKjKGyKb3hDVvG4SK7LStaqdIiACIiACIiACIiACIiAClRCQWCGxQp4VGboHJFZU0t2prAiIgAiIgAiIgAiIgAiIQFYISKzIkKFazTf0qiubXhoSK7LStaqdIiACIiACIiACIiACIiAClRDYK2JFq1atUt/m59ueZliXk7cpysd1VtqeuL6m/J6ltjYlhyzWLbGiku5OZUVABERABERABERABERABLJCoCKxonPnzu6ee+7xn7vvvttdc801bv/9908VIswwPPLII91LL72Ummf9+vVu9OjRrnXr1m7ZsmWuQ4cOqfmo66effsq7z46Vb3nqqae6lStXll1+5syZjvan1WttT9sXbjvwwAPd7Nmz3apVq9z111/vYMj+Yuc8a9Ysz3nBggXujDPOSMqFdZe6Xgm7Uo+hfE3juSGxIitdq9opAiIgAiIgAiIgAiIgAiJQCYGKxIqDDz7Yfffdd27ChAnu5JNPdosWLXIff/yxa9u2bapBjwFbilhBvilTpngDPp/RW4nB3Vix4sQTT3SIDbQJMQVhxdpXilhx6KGHus8//9zNmDHDjR8/3i1dutS98847rl27dr6e8Jw//PBD16ZNm6R+uLJ/0qRJDsHiueeeS/ZZG0pdVsKu1GMon8SKSjomlRUBERABERABERABERABEahvAhWLFRjfoWGKUT1w4EB33HHHuaOPPjrZd/XVV/t1xIpXXnnFTZ061c2bN88NGzYsyRMa/FdddZWz4QqTJ0/2eRFF7FgY3EcddZS75ZZb3MiRI5Pt7D/rrLPc7bff7hAXLH/Hjh0dbZg7d66bPn16A88KhBfKkR+PjksuuSQpe8UVV/j10047zfXq1cuNGTPGvffee27FihVu3Lhxfh9tP+ecc9yNN97oaK8JEHZ8lk888YQ/73AbDODFNjtn2Pz222++rgEDBvh9cKWNVnbXrl2JF0vv3r29twaeHwcccECSJ9/2UKygzcOHD0/KWP1aNo3YUClXeVbUd4etsxcBERABERABERABERCBeiFQVbECo/vXX3/1RvScOXO8OGDGmRnIiBV79uxxN998szv77LPdJ5984oUN8oVixQ8//OA9KxAIXnzxRS8QPPnkk+6UU07xhjX1IRbgbUAdxxxzjN9+2223ueXLl/v8lMPjA9Hj9ddf9wIGggRCQzwMZJ999nFfffWVPyaiCG3s2rWr69+/vz8+7Vu7dq2v94gjjnCbN292nKMNC6HtbDvzzDPdxo0b3Q033NBAAOCcEE2MSby0c0YM+fnnn73o0aNHD58fsQJeJ510krvzzjvdyy+/7M8LT49PP/3Uc0Bg2b59uxdb8m3nmHYtaD/tThNW4rbpe22IFxIr6qVr1nmKgAiIgAiIgAiIgAiIQH0TqFiswKj/7LPP3I4dO/wQEN7UY9gWEiteffXVxGDHC2H16tX+e5pYwbAHRAAM+Pbt2yflMLhtuAmxHxA/OC4eBwyxGDt2rBcM1qxZ44YOHepee+21pCwxH2KxgrIbNmxwxx57rFu4cKGjHPmIw3Httdf6siZWkPfxxx/P8dyg7ebJgbcIQgn57ENMCrwlWLKtZ8+e7oUXXvAf8+IwsYL9nIedH98RK5YsWeKFCoaAcHz20z5Y23EQahBM8m0nH+zwPHnsscdyhppYHVr+77rVGguJFfXdYevsRUAEREAEREAEREAERKBeCFQsVsTDQMy4KyRWhAE2R4wY4Z555hlvbKeJFdSHYIF4gMGOmMA28w5g/bLLLvPDRBAz2M5wD/sQn4KhGhjm1rZ8MSsQDRhWgtCA98T999/vxYR+/fr5ssXECothwdANBBY7ni3ff//9xBODeBTdu3f3x7AhMsXEinAYCN4beJ0wjMTEDo7DMBfjkbadPDDCM2PTpk0SKwJBya5TLS8lVtRL16zzFAEREAEREAEREAEREIH6JtBkYsV5553nh2lg+BG7wsQFhk3ghdGpUydvzOPFYJ4BaWIF3gp4VVAPwyAWL17s160+tptxzvpbb73lBg0a5PPgYcGwEYZEMMTDZiphNo40zwqGXOAlgjBCXW+88Yb74IMP/DrfQ7HioYce8iIK2/mEbc8nVhCLAqHGZgBBBKFdBN6kjlCsYLvlY18Ys4LtCB99+/b1bcAjhKEueFps3brVx/JA4EnbTl3GDpbGk+361D4DiRX13WHr7EVABERABERABERABESgXgg0mVjRpUsXx3APYiisW7cuMZARK7744gs/C8a7777rPRfIi6EcGvxmuB922GFu27ZtPg4ESwsGaQY35UKxgiEf5MNr4Pnnn3fdunXzdU+bNs19+eWXXszYsmVLqlhBXbTpggsu8GUQNJiS1Yz4UKwgFgaxMpi6NW57PrGCfATRRBBhtg8ECbw8rH47Z77jIUFsDQQOviNWUI4lgsx1112XlLvvvvs8T4QVGw5DmXzbjR3eHXCCjbVBy9oWLCRW1EvXrPMUAREQAREQAREQAREQgfomUJFYUYphy8waafkwlEPPgbQ84Ta8IsKpPMN9aetpgSzLPWZaveE2gnKGcTTCfcXWTaAplA8+FuOiUD72wTktUGa+7cXq0/7aFC0kVtR3h62zFwEREAEREAEREAEREIF6IdDkYoWM3to0enVdsnldJFbUS9es8xQBERABERABERABERCB+iYgsUKxGlI9XyRm1KaYIbGivjtsnb0IiIAIiIAIiIAIiIAI1AsBiRUSKyRWZOgekFhRL12zzlMEREAEREAEREAEREAE6puAxIoMGarydqhNb4fmvC4SK+q7w9bZi4AIiIAIiIAIiIAIiEC9EJBYIbFCnhUZugckVtRL16zzFAEREAEREAEREAEREIH6JiCxIkOGanO+wdexatOLQ2JFfXfYOnsREAEREAEREAEREAERqBcC/z9D8AuqgvbooAAAAABJRU5ErkJggg==" width="640" /></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<br /></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<br /></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<br /></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-family: Times; font-size: small;">Puppet Enterprise:</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-family: Times; font-size: small;"> username: admin</span></div>
<div class="p1" style="font-family: Menlo; font-size: 14px; font-stretch: normal; font-variant-east-asian: normal; font-variant-numeric: normal; line-height: normal;">
<span style="font-family: Times; font-size: small;"> password: puppetlabs</span></div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com1tag:blogger.com,1999:blog-1558655160235390677.post-76039581470660208042019-11-12T02:43:00.001-08:002019-11-12T02:43:50.507-08:00ESP32 with PS3 Controller - M5StickC<h2>
Arduino PS3 Library for the ESP32</h2>
Library available originally written for use with Espressif library, but it does have beta support for Arduino at the time of writing.<br />
<br />
<a href="https://github.com/jvpernis/esp32-ps3">https://github.com/jvpernis/esp32-ps3</a><br />
<br />
In my experience the device works well in both loop and callback configurations, but I did see issues when attempting to read all the available data from PS3 controller and then write to the screen. It was causing a device reboot that I wasn't able to easily solve.<br />
<br />
<h4>
How to install library:</h4>
<div>
Tested with Arduino 1.8.10 on Windows 10.</div>
<br />
<ol>
<li>From the command line, navigate to Arduino/libraries/ folder</li>
<li>git clone https://github.com/jvpernis/esp32-ps3.git</li>
<li>git checkout develop</li>
<li>Restart the Arduino IDE and the library should be available in the "examples" section</li>
</ol>
<h4>
<br /></h4>
<h4>
How to connect to controller:</h4>
There are two ways to configure the controller with your device<br />
<br />
<ol>
<li>Retrieve the Bluetooth MAC address of the device the controller is currently connected to</li>
<li>Set the Bluetooth MAC address of the controller</li>
</ol>
<div>
I've opted for option 1 as it allows me to keep the device connected to my PS3 for normal use. To get the PS3 controller Bluetooth MAC address follow the instructions in the <a href="https://github.com/jvpernis/esp32-ps3">readme</a> and retrieve using the <a href="https://dancingpixelstudios.com/sixaxis-controller/sixaxispairtool/">SixaxisPairTool</a>.</div>
<br />
<br />
<h2>
M5StickC Testing</h2>
<div>
Example program showing how to retrieve all the available information from the controller and write to the M5StickC screen:</div>
<div>
<br /></div>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="overflow-wrap: normal;"><span style="font-family: "arial";"><m5stickc .h=""><ps3controller .h=""><span style="font-size: 12px;">#include <M5StickC.h>
#include <Ps3Controller.h>
// M5StickC screen parameters
#define TEXT_HEIGHT 16 // Height of text to be printed and scrolled
#define TOP_FIXED_AREA 14 // Number of lines in top fixed area (lines counted from top of screen)
#define BOTTOM_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen)
#define YMAX 80 // Bottom of screen area
#define XMAX 160 // Bottom of screen area
// M5StickC tracking drawing to screen positions
int deviceName = 0;
int controllerInfoX = 20;
int joystickInfoX = 40;
int gyroInfoX = 60;
void setup() {
// Setup the TFT display
M5.begin();
M5.Lcd.setRotation(3); // Must be setRotation(0) for this sketch to work correctly
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLUE);
M5.Lcd.fillRect(0, 0, XMAX, TEXT_HEIGHT, TFT_BLUE);
M5.Lcd.drawCentreString("AliPhoenix Hexapod", XMAX/2, 0, 2);
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); // Change colour for scrolling zone text
// Setup the PS3 controller
Ps3.begin("2c:81:58:a9:8d:76");
// Setup the serial port for debugging
Serial.begin(115200);
Serial.println("Ready.");
}
void loop()
{
if (Ps3.isConnected()){
// Clear the area we will be writing to
M5.Lcd.fillRect(0, controllerInfoX, XMAX, TEXT_HEIGHT, TFT_BLACK);
if( Ps3.data.button.cross ){
M5.Lcd.drawString("Button: CROSS", 0, controllerInfoX, 2);
}
if( Ps3.data.button.square ){
M5.Lcd.drawString("Button: SQUARE", 0, controllerInfoX, 2);
}
if( Ps3.data.button.triangle ){
M5.Lcd.drawString("Button: TRIANGLE", 0, controllerInfoX, 2);
}
if( Ps3.data.button.circle ){
M5.Lcd.drawString("Button: CIRCLE", 0, controllerInfoX, 2);
}
if( Ps3.data.button.left ){
M5.Lcd.drawString("Button: LEFT", 0, controllerInfoX, 2);
}
if( Ps3.data.button.right ){
M5.Lcd.drawString("Button: RIGHT", 0, controllerInfoX, 2);
}
if( Ps3.data.button.up ){
M5.Lcd.drawString("Button: UP", 0, controllerInfoX, 2);
}
if( Ps3.data.button.down ){
M5.Lcd.drawString("Button: DOWN", 0, controllerInfoX, 2);
}
if( Ps3.data.button.l1 ){
M5.Lcd.drawString("Button: L1", 0, controllerInfoX, 2);
}
if( Ps3.data.button.l2 ){
M5.Lcd.drawString("Button: L2", 0, controllerInfoX, 2);
}
if( Ps3.data.button.l3 ){
M5.Lcd.drawString("Button: L3", 0, controllerInfoX, 2);
}
if( Ps3.data.button.r1 ){
M5.Lcd.drawString("Button: R1", 0, controllerInfoX, 2);
}
if( Ps3.data.button.r2 ){
M5.Lcd.drawString("Button: R2", 0, controllerInfoX, 2);
}
if( Ps3.data.button.r3 ){
M5.Lcd.drawString("Button: R3", 0, controllerInfoX, 2);
}
if( Ps3.data.button.start ){
M5.Lcd.drawString("Button: START", 0, controllerInfoX, 2);
}
if( Ps3.data.button.select ){
M5.Lcd.drawString("Button: SELECT", 0, controllerInfoX, 2);
}
//-----------------------------------------------------------------------
// Clear the area we will be writing to
M5.Lcd.fillRect(0, joystickInfoX, XMAX, TEXT_HEIGHT, TFT_BLACK);
String messageJoystick;
messageJoystick += "lx:";
messageJoystick += Ps3.data.analog.stick.lx;
messageJoystick += ", ly:";
messageJoystick += Ps3.data.analog.stick.ly;
messageJoystick += ", rx:";
messageJoystick += Ps3.data.analog.stick.rx;
messageJoystick += ", ry:";
messageJoystick += Ps3.data.analog.stick.ry;
// Write the message to the screen
M5.Lcd.drawString(messageJoystick, 0, joystickInfoX, 2);
//-----------------------------------------------------------------------
String message = "PS3: Connected";
// Clear the area we will be writing to
M5.Lcd.fillRect(0, deviceName, XMAX, TEXT_HEIGHT, TFT_BLACK);
if (Ps3.data.status.battery == ps3_status_battery_charging) message += ", Charging";
else if (Ps3.data.status.battery == ps3_status_battery_high) message += ", High";
else if (Ps3.data.status.battery == ps3_status_battery_full) message += ", Full";
else if (Ps3.data.status.battery == ps3_status_battery_low) message += ", Low";
else if (Ps3.data.status.battery == ps3_status_battery_dying) message += ", Dying";
else if (Ps3.data.status.battery == ps3_status_battery_shutdown) message += ", Shutdown";
else message += ", Undefined";
// Write the message to the screen
M5.Lcd.drawString(message, 0, deviceName, 2);
//-----------------------------------------------------------------------
String messageAccel;
messageAccel += "a.x:";
messageAccel += Ps3.data.sensor.accelerometer.x;
messageAccel += " y:";
messageAccel += Ps3.data.sensor.accelerometer.y;
messageAccel += " z:";
messageAccel += Ps3.data.sensor.accelerometer.z;
String messageGyro;
messageGyro += " g.z:";
messageGyro += Ps3.data.sensor.gyroscope.z;
M5.Lcd.drawString(messageAccel+messageGyro, 0, gyroInfoX, 2);
}
delay(100);
}</span></ps3controller></m5stickc><span style="font-family: "arial";"><span style="font-size: 12px;">
</span></span></span></code></pre>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-43031247939396274732019-09-09T04:27:00.003-07:002019-09-09T04:28:36.037-07:00ARDUINO: ESP32 Bluetooth Serial Pass-through And Debugger - M5StickCThis is a simple Arduino project showing how to use the M5StickC device as a bluetooth/serial port pass through with the LCD screen as a built in debugger.<br />
<br />
The device shows up on your phone as a bluetooth device called "M5StickC", and once you've connected from your device you can use an app like <a href="https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal&hl=en_AU">Serial Bluetooth Terminal</a> communicate with your device.<br />
<br />
Messages coming from USB serial port are printed as white text and messages coming from bluetooth are printed as blue text.<br />
<br />
<br />
<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="overflow-wrap: normal;"><span style="font-family: "arial";"><span style="font-size: 12px;">#include "bluetoothserial.h"
#include "m5stickc.h"
// M5StickC screen parameters
#define TEXT_HEIGHT 16 // Height of text to be printed and scrolled
#define TOP_FIXED_AREA 14 // Number of lines in top fixed area (lines counted from top of screen)
#define BOTTOM_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen)
#define YMAX 80 // Bottom of screen area
#define XMAX 160 // Bottom of screen area
uint16_t yStart = 0; // The initial y coordinate of the top of the scrolling area
uint16_t yArea = YMAX-TOP_FIXED_AREA-BOTTOM_FIXED_AREA; // yArea must be a integral multiple of TEXT_HEIGHT
uint16_t yDraw = 0; // The initial y coordinate of the top of the bottom text line
uint16_t xPos = 0; // Keep track of the drawing x coordinate
byte data = 0;
int blank[19]; // We keep all the strings pixel lengths to optimise the speed of the top line blanking
BluetoothSerial SerialBT;
void setup() {
// Setup the TFT display
M5.begin();
M5.Lcd.setRotation(3); // Must be setRotation(0) for this sketch to work correctly
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLUE);
M5.Lcd.fillRect(0, 0, XMAX, TEXT_HEIGHT, TFT_BLUE);
M5.Lcd.drawCentreString("Serial Term - 115200", XMAX/2, 0, 2);
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK); // Change colour for scrolling zone text
setupScrollArea(TOP_FIXED_AREA, BOTTOM_FIXED_AREA); // Setup scroll area
for (byte i = 0; i<18; i++) blank[i]=0; // Zero the array
Serial.begin(115200); // Initialise the serial ports
SerialBT.begin("M5StickC"); // Bluetooth device name
Serial.println("\n# Bluetooth started #\n"); // Let the user know via usb serial port the device is ready
}
void loop() {
// Check the Serial buffer for a new message
while(Serial.available()) {
data = Serial.read(); // Read the character from the serial port
SerialBT.write(data); // Write the message to the Bluetooth serial port
M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);
writeToScreen(data); // Also write to the M5StickC screen
}
// Check the bluetooth buffer for a new message
while(SerialBT.available()) {
data = SerialBT.read(); // Read the character from the bluetooth port
Serial.write(data); // Write the message to the serial port
M5.Lcd.setTextColor(TFT_BLUE, TFT_BLACK);
writeToScreen(data); // Also write to the M5StickC screen
}
delay(20);
}
void writeToScreen(byte data) {
// If it is a CR or we are near end of line then scroll one line
if (data == '\r' || xPos > XMAX) {
xPos = 0;
yDraw = scroll_line(); // It can take 13ms to scroll and blank 16 pixel lines
}
if (data > 31 && data < 128) {
xPos += M5.Lcd.drawChar(data,xPos,yDraw,2);
}
}
/**
* Scroll the display one text line
*/
int scroll_line() {
// Store the old yStart, this is where we draw the next line
int yTemp = yStart;
// Use the record of line lengths to optimise the rectangle size we need to erase the top line
M5.Lcd.fillRect(0,yStart,XMAX,TEXT_HEIGHT,TFT_BLACK);
// Change the top of the scroll area
yStart += TEXT_HEIGHT;
// The value must wrap around as the screen memory is a circular buffer
if (yStart >= YMAX)
yStart = 0;
// Now we can scroll the display
scrollAddress(yStart);
return yTemp;
}
/**
* Setup the vertical scrolling start address pointer
*/
void scrollAddress(uint16_t vsp) {
M5.Lcd.writecommand(ST7735_VSCRDEF); // Vertical scrolling pointer
M5.Lcd.writedata(vsp>>8);
M5.Lcd.writedata(vsp);
}
/**
* Setup a portion of the screen for vertical scrolling
* We are using a hardware feature of the display, so we can only scroll in portrait orientation
*/
void setupScrollArea(uint16_t tfa, uint16_t bfa) {
M5.Lcd.writecommand(ST7735_VSCRDEF); // Vertical scroll definition
M5.Lcd.writedata(tfa >> 8); // Top Fixed Area line count
M5.Lcd.writedata(tfa);
M5.Lcd.writedata((YMAX-tfa-bfa)>>8); // Vertical Scrolling Area line count
M5.Lcd.writedata(YMAX-tfa-bfa);
M5.Lcd.writedata(bfa >> 8); // Bottom Fixed Area line count
M5.Lcd.writedata(bfa);
}</span><span style="font-family: "arial";"><span style="font-size: 12px;">
</span></span></span></code></pre>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-36217253852474104332019-07-22T00:32:00.001-07:002019-07-22T00:32:37.678-07:00Visual Studio Code with Arduino - ESP8266<div dir="ltr">
The Arduino IDE is awesome for getting small projects up and running really quickly, but as soon as your project starts to get a little more complex and you are creating and managing more than a handful of files it gets painful pretty quickly.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Visual Studio Code is an alternative IDE you can use not only to edit your projects, but also build, upload and even debug your project! It comes with benefits like Intellisense, Git integration and easy navigation to definitions.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
I followed <a href="https://medium.com/home-wireless/use-visual-studio-code-for-arduino-2d0cf4c1760b">this</a> guide to get started, but there were a few little things that tripped me up I thought I'd give some more detailed examples.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<h2>
1. Get yourself setup with Visual Studio Code</h2>
Download and install <a href="https://code.visualstudio.com/download">VS Code</a> for your OS. I'm using a Mac for this, I haven't tried with Windows/Linux but process should be the same.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<div class="separator" style="clear: both; text-align: center;">
<img border="0" data-original-height="906" data-original-width="1600" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieBUne_pdVzJ103nGnc4lSaU4_8k7ClXxx8wZYOC7Wxl6Znf5BDF2-InrGVD9xQWB7ZxlXeDr3Xlm4ohrJyNzIHY0rIZpT9ZuJtlbl6rvvWNsoPs2PIKnnIpzeH-btjzKB_Rgz1_4lMEvr/s320/Screen+Shot+2019-07-17+at+6.25.46+pm.png" width="320" /><span id="goog_1111067680"></span><a href="https://www.blogger.com/"></a><span id="goog_1111067681"></span></div>
<br /></div>
<div dir="ltr">
<h2>
2. Install the Arduino plugin</h2>
Install the VS Code plugin for Arduino from the VS code store. Take note of the recommended version of Arduino to install (required for Step 3).</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv08rNV-BY4-lLcpfkPe2nocf6-xpgiQrqdlgMsf9xB6kx11LSO8pF08e2tBCzRG0g6kUWkTh81lhkf1K9N03ad9-9fgZrMzIeyxuAhyphenhyphen-CGooLTYMsQXr21fMpMr44_YCER1ulBh1XigAB/s1600/Screen+Shot+2019-07-17+at+5.54.03+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1262" data-original-width="1600" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv08rNV-BY4-lLcpfkPe2nocf6-xpgiQrqdlgMsf9xB6kx11LSO8pF08e2tBCzRG0g6kUWkTh81lhkf1K9N03ad9-9fgZrMzIeyxuAhyphenhyphen-CGooLTYMsQXr21fMpMr44_YCER1ulBh1XigAB/s400/Screen+Shot+2019-07-17+at+5.54.03+pm.png" width="400" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<h2>
3. Install the Arduino IDE</h2>
</div>
<div dir="ltr">
VS Code will use the Arduino to actually build your project. Take note of the Arduino version comment in the VS code arduino plugin and select an appropriate version to <a href="https://www.arduino.cc/en/main/software">download</a>.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<h2>
4. Open your project</h2>
</div>
<div dir="ltr">
Use the file->open (not "open workspace") to open the root folder of your project.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<div dir="ltr">
<h2>
5. Configure your settings</h2>
Add any special boards you want to the project config. In my case I've added the esp8266 boards.</div>
<div dir="ltr">
Menu -> Code -> Preferences -> Workspace Preferences Tab -> Type "additionalUrls" in the search bar and "Edit in settings.json" the file.</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZkxI_bjKTTokwZmK4l6a2sg8BZUVoxpaGZ3e9LFZY7r3CutgNdDWSOsgeXh62z3H5f7GwAaOsBhgtC9K6uomLVfYIQ0kOzuC2eeeGBsUI04BCkdfUO5zzWBSSGU8VZzNPrf7CIch-Fbl/s1600/Screen+Shot+2019-07-17+at+6.08.17+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="664" data-original-width="1600" height="264" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQZkxI_bjKTTokwZmK4l6a2sg8BZUVoxpaGZ3e9LFZY7r3CutgNdDWSOsgeXh62z3H5f7GwAaOsBhgtC9K6uomLVfYIQ0kOzuC2eeeGBsUI04BCkdfUO5zzWBSSGU8VZzNPrf7CIch-Fbl/s640/Screen+Shot+2019-07-17+at+6.08.17+pm.png" width="640" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Add the following so your settings.json file looks something like this:</div>
<div dir="ltr">
<br /></div>
<div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;">{
"arduino.enableUSBDetection": false,
"arduino.additionalUrls":"http://arduino.esp8266.com/stable/package_esp8266com_index.json"
}</code></pre>
</div>
<h2>
6. Set your Arduino board</h2>
Set the board for your project either from the drop down menu at the bottom of the screen or by navigating to the command options using cmd + shift + p, then searching for "Arduino" commands and select the "Arduino: Change Board Type". </div>
<div dir="ltr">
It can take a while for this to load sometimes, be patient. It took around a minute the first time I opened it for my project. Sometimes my board configuration screen is black as I've shown below</div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgITf3ELtFJVKFB9mbXpRKhMGGcjm7NdJpk7HcErA0NAX0hvqUzVtGU2S6jRctPM04IYaJp-AaS0VaapIRkA8TN5QQ_xY1ic1g2SeUFhpQDrYvo3g_qomxACbGPNRMuefHh47VQuXBMndB0/s1600/Screen+Shot+2019-07-17+at+5.58.28+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1498" data-original-width="1324" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgITf3ELtFJVKFB9mbXpRKhMGGcjm7NdJpk7HcErA0NAX0hvqUzVtGU2S6jRctPM04IYaJp-AaS0VaapIRkA8TN5QQ_xY1ic1g2SeUFhpQDrYvo3g_qomxACbGPNRMuefHh47VQuXBMndB0/s320/Screen+Shot+2019-07-17+at+5.58.28+pm.png" width="282" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<h2>
7. Initialise the project</h2>
Ctrl+Shift+P and then search for "Arduino" commands, scroll down to "Initialise" and hit it. This will add a arduino.json and c_cpp_properties.json files to your project and set up a few things. Add any project dependencies here.<br />
<br />
<h2>
8. Compile your code</h2>
Compile with the shortcut Command+Option+r, or by searching for the Arduino compile option with Ctrl+Shift+P.<br />
You will see the Arduino logo pop up during the compilation step.<br />
<br />
<h2>
9. Upload your code</h2>
Upload with Command+Option+U<br />
<br />
<h2>
Troubleshooting</h2>
Its worth calling out that Arduino doesn't behave as you would expect with included files/folders.<br />
Even though the VS Code IDE will be able to find a file/folder because you have linked it there is a chance it still may not compile.<br />
<br />
Take a read through the <a href="https://github.com/arduino/Arduino/issues/5176">expected Arduino project file structure here</a> and organise your project to suit.</div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-69625677515488617512018-03-08T00:33:00.002-08:002018-03-08T00:33:55.817-08:00Resetting an SD card after writing a Linux Image from WindowsAfter writing the Rasbian image to my SD card for a new Raspberry Pi project I found myself wanting to reset the SD card to be used as normal storage so I could install NOOBS, but I got stuck when I couldn't work out how to delete the partitions made by writing the image on the device from Windows.<br />
<br />
I found a Windows solution in the way of DISKPART that got the job done.<br />
<br />
<h2>
How to use DISKPART</h2>
<br />
<ol>
<li>Open a new command window by either searching for "cmd" from the windows menu or pressing the windows key and 'r' and running the command "cmd" and hit enter</li>
<li>Enter the command "DISKPART" and another command window will be opened</li>
<li>In the new window type "LIST DISK" and hit enter</li>
<li>Select the correct disk from the list with the command "SELECT DISK #" replacing the # with the drive number of the SD card. Make sure you get this right or you could ruin your windows installation!</li>
<li>Enter the command "CLEAN" to clear the partition table</li>
<li>Enter the command "CREATE PARTITION PRIMARY" to reallocate the cleaned space as the primary partition</li>
<li>Enter the command "FORMAT FS=FAT32 QUICK" to reformat the SD card</li>
</ol>
<br />
Optionally you can use the command "ASSIGN" to reassign a drive letter to the SD card.Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-66306685291417489672017-07-02T03:30:00.000-07:002017-07-02T03:30:06.483-07:00DRONE: Ublox Neo M8N GPS + SP Racing F3 WiringI have been toying with adding GPS to my quadcopter and after doing some research I went ahead and purchased the Mini Ublox M8N Neo GPS Receiver from <a href="https://www.banggood.com/Mini-Ublox-M8N-GPS-Module-NEO-M8N-GPS-for-APM-2_52_62_8-CC3D-SP-Racing-F3-Naze32-Flip32-PX4-p-1035454.html">banggood</a>.<br />
<br />
The banggood site has a few different options for different flight controllers, but the SP racing version doesn't come with a compass. I have the Eachine version of the SP racing board that didn't come with a compass, barometer or altimeter so I bought the APM version and decided I would replace the connectors to suit my board.<br />
<br />
The SP Racing F3 manual says that the connectors are JST-XH but I ordered a few and was disappointed to discover they were the wrong ones for my Eachine version of the SP racing board.<br />
After ordering a few types, I discovered the type on my board are the JST-SH 1.0mm (at least for the 4 pin ports).<br />
<br />
I found out the hard way that the little piece of paper that comes with the device is misleading.<br />
I was expecting that I would need to cross TX/RX from the GPS device when connecting to the FC, so I wired based on that and got stuck for a while trying to work out why my device wouldn't connect to my FC. It took me a while to realise that I should have been following the diagram below from the banggood website.<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-5rsPlSIRCgRQyutRabs8jbXB1OfNR0pPXbvq_yUjGUgtPtqRBzPw4Dsl3GaWBitKd03USiVTtOv_DaoxNmAyGt76TrCtW1oED74PpQhGIu5wBDeEZsJygxsrebO2ZVOez8FzqCpRSbHu/s1600/M8N+Ublox+Neo+Wiring.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="173" data-original-width="294" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-5rsPlSIRCgRQyutRabs8jbXB1OfNR0pPXbvq_yUjGUgtPtqRBzPw4Dsl3GaWBitKd03USiVTtOv_DaoxNmAyGt76TrCtW1oED74PpQhGIu5wBDeEZsJygxsrebO2ZVOez8FzqCpRSbHu/s1600/M8N+Ublox+Neo+Wiring.JPG" /></a></div>
<br />
Once I fixed this the device connected immediately and functioned as expected. By default my device was working at 9600 baud.Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-14883667001429683172017-06-20T04:17:00.001-07:002017-06-20T04:17:37.314-07:00HOME AUTOMATION: Google Home Assistant + Say a simple phrase with a number + openHABI've spent a bit of time integrating <a href="https://andrew-klimovski.blogspot.com.au/2017/06/home-automation-using-black-bean-rm.html">IR blasters</a> in to my openHAB setup to gain control of my TV and AC. I was able to get simple functions working with the basic "Say a simple phrase" but this wasn't cutting it for something like controlling the volume of the TV so I've written a script that executes a command a given number of times based on the "Say a simple phrase with a number" action in IFTTT. This way I can say "Turn up the TV volume by 10".<br />
<div>
<br /></div>
<div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> #!/bin/sh
# execute the command multiple times based on command line argument
for i in $(seq 1 $1); do
python /home/openhabian/addons/BlackBeanControl/BlackBeanControl.py -c LG_TV_V$
done
</code></pre>
<br />
I put my scripts in the /etc/openhab2/scripts folder.<br />
You will need to create a thing/item combination that uses the Exec binding as I've done <a href="https://andrew-klimovski.blogspot.com.au/2017/06/home-automation-openhab-exec2-binding.html">here</a>.<br />
To test the command is working as expected use the command:<br />
<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> bash /etc/openhab2/scripts/tv_lounge_volume_down.sh 5
</code></pre>
<br />
If everything went well you should see your command executed 5 times. Pair this with <a href="https://andrew-klimovski.blogspot.com.au/2017/06/home-automation-voice-control-with.html">my instructions</a> on connecting openHAB with the Google Home Assistant and you should be set.<br />
<br />
For reference this is what my applet looks like at the command end.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXSMD24YfJju2XiE2xcHhOhcqtWXnhef193J6q9RACR-Cunf0Dq3INW9Nme1JfHPkBig_WYVbJmi-hJsnMupr0k9SxkX1uu8TnicUOSeSzbW3io8yBGPnHygxVRR3u7TcuBKTZjeXvLrZG/s1600/say+a+simple+phrase+with+a+number.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="578" data-original-width="416" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXSMD24YfJju2XiE2xcHhOhcqtWXnhef193J6q9RACR-Cunf0Dq3INW9Nme1JfHPkBig_WYVbJmi-hJsnMupr0k9SxkX1uu8TnicUOSeSzbW3io8yBGPnHygxVRR3u7TcuBKTZjeXvLrZG/s320/say+a+simple+phrase+with+a+number.JPG" width="230" /></a></div>
<br /></div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-4374123286775710802017-06-20T03:48:00.001-07:002017-06-20T03:49:12.282-07:00HOME AUTOMATION: Voice control with Google Home + IFTTT + myopenHABRecently I purchased a Google Home Assistant and it's been a lot of fun to play with the native features like shopping lists, reminds and Chromecast control I was really excited to dig in to getting the Home Assistant tied in to my openHAB setup. While the HA does not native support openHAB, it does support IFTTT and now openHAB also has added support for IFTTT through myopenHAB.<br />
I followed the steps below to get my setup working.<br />
<br />
<br />
<h2>
Install the "openHAB Cloud Connector" Add-on</h2>
I've already covered this in a <a href="https://andrew-klimovski.blogspot.com.au/2017/06/home-automation-openhab-and-myopenhab.html">previous post</a>, make sure myopenHAB is set up correctly and ensure you have exposed the items you want to connect with your HA.<br />
<br />
<b><i>Note: I've seen it take up to 36 hours for settings updated from the cloud connect plugin to appear in the IFTTT actions menu</i></b><br />
<br />
<br />
<h2>
IFTTT Integration</h2>
Register for IFTTT and create a custom applet by selecting the "My Applets" link<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjch8AgCWtSsXXdr0DBjov8F006RJeGfn5MCAnHdYdCZATObwxi2vuzwOx1_VfJIoo3KDwViQHfaowY0cuyJM-kyZEpv8kVTKLNcdN7bwNmYzYnrSwVks8KDKvkqovtmBaVJIwcz79wgU9O/s1600/IFTTT.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="632" data-original-width="1348" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjch8AgCWtSsXXdr0DBjov8F006RJeGfn5MCAnHdYdCZATObwxi2vuzwOx1_VfJIoo3KDwViQHfaowY0cuyJM-kyZEpv8kVTKLNcdN7bwNmYzYnrSwVks8KDKvkqovtmBaVJIwcz79wgU9O/s400/IFTTT.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">IFTTT home page</td></tr>
</tbody></table>
<br />
<br />
<br />
Create a new applet and click on the blue "+ this" button. This was confusing to me at first because I don't think it looks much like a link/button.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_7CN_Tk84KYgy-tYESzIEdPAerREkxcF0UCAaNt-g8NwdnwBLnbHWGBuntq5trAHflOgGAQnvPwdQmwMRlSFdLeDzrCJnz4pZPzETHhIfpayZJOmb2xETs_sESavZkEJukiLxAbNmd0h/s1600/IFTTT+new+applet+1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="630" data-original-width="1349" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif_7CN_Tk84KYgy-tYESzIEdPAerREkxcF0UCAaNt-g8NwdnwBLnbHWGBuntq5trAHflOgGAQnvPwdQmwMRlSFdLeDzrCJnz4pZPzETHhIfpayZJOmb2xETs_sESavZkEJukiLxAbNmd0h/s400/IFTTT+new+applet+1.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Select "New Applet"</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK9lx5K9uhHZgBweUQspHDfF6bjatK092h8PCrduNuCbri6YHnYx4UmTKMPnDlu37Ao5PeiGjNhb7ZU-7NMrqJxV9apupk9q6ZU7Ii4o4JwxG60JpMIhF0XGaCoJYRQFp0o9l-KYOupztt/s1600/IFTTT+new+applet+2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="630" data-original-width="1350" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK9lx5K9uhHZgBweUQspHDfF6bjatK092h8PCrduNuCbri6YHnYx4UmTKMPnDlu37Ao5PeiGjNhb7ZU-7NMrqJxV9apupk9q6ZU7Ii4o4JwxG60JpMIhF0XGaCoJYRQFp0o9l-KYOupztt/s400/IFTTT+new+applet+2.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Click the "+ this" button</div>
<br />
<br />
Filter the available connections by typing "google" and select the "Google Assistant" service.<br />
There are a number of options to choose from with the Google Assistant service, the simplest applet would use the "Say a simple phrase" function.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU6WhyvE-Jf4MxZXjE2VoFLEJSG4tjNxoxPhQ3Aia_AjI-ArRn5FgIWdXO7WNlu-Eks-y338S-K-rsaJ5Wq1c4disnux6RQw9-YqgEc8OFapwzEUCpRXekfTUH4aS-ECqAbK4rhsjkuMiB/s1600/IFTTT+new+applet+3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="635" data-original-width="1341" height="188" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU6WhyvE-Jf4MxZXjE2VoFLEJSG4tjNxoxPhQ3Aia_AjI-ArRn5FgIWdXO7WNlu-Eks-y338S-K-rsaJ5Wq1c4disnux6RQw9-YqgEc8OFapwzEUCpRXekfTUH4aS-ECqAbK4rhsjkuMiB/s400/IFTTT+new+applet+3.JPG" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinwAhrPIhMMz-EMMLB1hqUGSNIQWrlQFru411MNa1VO_2-KAwTkV20GDbpT3fj4kjloS0Pa1DYEarF20lSAs_seW-eKw4MZZLprgufSXc5WDGV1QiUsWaFh0A6RaDXGkZEWCJiuQpdcYIR/s1600/IFTTT+new+applet+4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="634" data-original-width="1347" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinwAhrPIhMMz-EMMLB1hqUGSNIQWrlQFru411MNa1VO_2-KAwTkV20GDbpT3fj4kjloS0Pa1DYEarF20lSAs_seW-eKw4MZZLprgufSXc5WDGV1QiUsWaFh0A6RaDXGkZEWCJiuQpdcYIR/s400/IFTTT+new+applet+4.JPG" width="400" /></a></div>
<br />
It's important to think about the various ways you might want to say the command you wish to execute. I've had to change a number of my applets because what I thought was natural when making the applet didn't roll off the tongue when I was sitting on the couch.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuw4brKbEWxGp5kEWq_YSVqLSYppxWE5ZA95Wt5iclr7mbvtOzR_xD_E6MNPrNvSZSjY3K4cTlbbpWe2LwaOTzi6IIFFV0U0uoTxJWFM6icpliSwCKk85oVjlKRQSccolMRAO7ddXf4M8V/s1600/IFTTT+new+applet+6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="618" data-original-width="331" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuw4brKbEWxGp5kEWq_YSVqLSYppxWE5ZA95Wt5iclr7mbvtOzR_xD_E6MNPrNvSZSjY3K4cTlbbpWe2LwaOTzi6IIFFV0U0uoTxJWFM6icpliSwCKk85oVjlKRQSccolMRAO7ddXf4M8V/s400/IFTTT+new+applet+6.JPG" width="213" /></a></div>
<br />
Next thing to do is to set the "that" part of IFTTT by clicking the "+ that" button and filtering the services for openHAB. Once the openHAB service is selected there is only one action, so no place to go wrong here.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGlid8bfwE0nqJfezX8cNHLcsRilBqSzsvw7NqHSFbG7vfkI2E7GlMuaDmjidxBiU_tW61BI4-BYDG0fr0lPCs8qaA10ezF_hfHfP6EHtrxjHVMxOb4c-hx5DXWpB-IbpoDqH6SPIqAi5U/s1600/IFTTT+new+applet+8.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="634" data-original-width="1346" height="187" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGlid8bfwE0nqJfezX8cNHLcsRilBqSzsvw7NqHSFbG7vfkI2E7GlMuaDmjidxBiU_tW61BI4-BYDG0fr0lPCs8qaA10ezF_hfHfP6EHtrxjHVMxOb4c-hx5DXWpB-IbpoDqH6SPIqAi5U/s400/IFTTT+new+applet+8.JPG" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOITOrB9BQi0nhHgeSCkvoepws4ZHGEFWQLULU3YvpUvKJZcUW19yLFnXkuKWpcLflv_Nf9CJsabg5EHbnihVnHlV4veX_dK3IMd5iWgucwDzk22Z705yazr_QqQLNDsqAEFq7UdrMcKHP/s1600/IFTTT+new+applet+9.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="630" data-original-width="1347" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOITOrB9BQi0nhHgeSCkvoepws4ZHGEFWQLULU3YvpUvKJZcUW19yLFnXkuKWpcLflv_Nf9CJsabg5EHbnihVnHlV4veX_dK3IMd5iWgucwDzk22Z705yazr_QqQLNDsqAEFq7UdrMcKHP/s400/IFTTT+new+applet+9.JPG" width="400" /></a></div>
<br />
Now select the item that was exposed through the openhab Cloud Connector Add-on. Once again, if your items aren't showing up you may need to give it more time to be updated. I've seen it take up t 36 hours.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1WrlT8GfqaLk5XOH-ss5bnDG7VJ3LbQMuuaeMgx-9M-klSdOkR55MkdYcS04cxNW5waf15w-x6k3dNOpMAr_nQtoub8AojFOXnCifUV1eETFJkeGsEJ_wGEasT3IJGdpQSKT1zMKzBqyr/s1600/IFTTT+new+applet+10.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="501" data-original-width="452" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1WrlT8GfqaLk5XOH-ss5bnDG7VJ3LbQMuuaeMgx-9M-klSdOkR55MkdYcS04cxNW5waf15w-x6k3dNOpMAr_nQtoub8AojFOXnCifUV1eETFJkeGsEJ_wGEasT3IJGdpQSKT1zMKzBqyr/s400/IFTTT+new+applet+10.JPG" width="360" /></a></div>
<br />
That's it! Finish off the applet creation, give it a few seconds and test it out.Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-4693855896857482802017-06-04T03:37:00.004-07:002017-06-04T03:37:59.241-07:00HOME AUTOMATION: Using the Black Bean RM Mini 3 with openHAB <div>
While there are a number of options out there for controlling infrared appliances like your TV and Air conditioner from your smartphone, none have come in at the price point of the Broadlink Black Bean RM Mini 3. I purchased 3 of the units from <a href="http://www.gearbest.com/living-appliances/pp_357329.html">gearbest </a>on flash sale for 12.89USD each with plans to use them only with the Broadlink app.</div>
<div>
<br /></div>
<div>
The app got old pretty quick so I started to dig in to openHAB integration. While there isn't an official openHAB binding for the devices there are a few python libraries out there for controlling the black bean. Combine those python scripts with the Exec binding and we can roll our own openHAB solution.</div>
<div>
<div>
<br />
<br /></div>
<div>
<h2>
Requirements</h2>
</div>
<div>
<ul>
<li>Broadlink black bean mini RM 3</li>
<li><a href="https://github.com/mjg59/python-broadlink">python-broadlink</a> GIT library</li>
<li><a href="https://github.com/davorf/BlackBeanControl">blackbeancontrol</a> GIT library</li>
<li><a href="http://docs.openhab.org/addons/bindings/exec/readme.html">Exec binding</a> for openHAB</li>
</ul>
</div>
<div>
<br />
<br />
<h2>
Python Library Setup</h2>
</div>
<div>
Go ahead and configure the RM Mini devices per the Broadlink instructions, then set a static IP on your router for each of the devices. We need to do this because the python control script reference the device by IP address. </div>
<div>
<br /></div>
<div>
Install the python-broadlink library and test the basic functions to ensure the library is working. </div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> cd ~/addons/
git clone https://github.com/mjg59/python-broadlink.git
cd python-broadlink
python setup.py build
python setup.py install
</code></pre>
<div>
<br />
Test the installation by running python in the command line and testing a few of the functions in the readme:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> python
>>> import broadlink
>>> print broadlink.discover(timeout=5)
[<broadlink.rm instance at 0x7661XXXX>, <broadlink.rm instance at 0x7661XXXX>, <broadlink.rm instance at 0x7661XXXX>]
>>> quit()
</code></pre>
<br />
The above confirms that the library found 3 devices on my network.<br />
<br />
<br /></div>
<div>
Now that we have confirmed the python-broadlink library is working, install the blackbeancontrol library:</div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> cd ~/addons/
git clone https://github.com/davorf/BlackBeanControl
cd BlackBeanControl
</code></pre>
<div>
<br /></div>
<div>
Test the library is working as expected by first configuring a default unit in the BlackBeanControl.ini and then attempting to learn a command. If the command argument name exists then it will be executed by the device, otherwise it will put the device in to the leaning state and wait to lean the command and save it for future use:
<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> python BlackBeanControl.py -c LG_TV_Vol_Down
</code></pre>
<br /></div>
<div>
If everything went to plan you should have seen the device go in to learning mode, learn the command, then if running the same command again you should have seen the command executed.<br />
Next step is to pair this python script with the exec binding to enable control from openHAB.</div>
<div>
<br /></div>
<div>
<br />
<h2>
openHAB Setup</h2>
</div>
<div>
Depending on how you would like to control your RM Mini from openHAB there are a few ways to configure your items and sitemap. I've <a href="https://andrew-klimovski.blogspot.com.au/2017/06/home-automation-openhab-exec2-binding.html">previously written</a> up a few examples on this topic.</div>
<div>
<br />
Typically I want my IR devices to function like a push button remote so I use items and rules to create my buttons (as opposed to things and items with the exec binding).<br />
<br /></div>
<div>
Item<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: #444444; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;">String TV_GF_Power "TV Power"</code></pre>
<br /></div>
<div>
Rules<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: #444444; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;"> rule "LG TV Power"
when
Item TV_GF_Power received update
then
executeCommandLine("python /home/openhabian/addons/BlackBeanControl/BlackBeanControl.py -c LG_TV_Power -d Lounge", 1000)
end </code></pre>
<br /></div>
<div>
Sitemap<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); color: #444444; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;">Switch item=TV_GF_Power mappings=[OFF="Power"] </code></pre>
</div>
</div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com2tag:blogger.com,1999:blog-1558655160235390677.post-10179324472100181892017-06-02T23:14:00.001-07:002017-06-02T23:14:37.737-07:00HOME AUTOMATION: openHAB and myopenhab - Accessing your openHAB installation from the webI've been thinking about the best way to access my openHAB installation from outside my network for a little while, but I've always been worried about the safety of exposing my network to the world so I never did it. Luckily though the folks at openHAB have created a free way to access your openHAB installation via the web without having to deal with port forwarding, firewalls and VPNs, This service is called <a href="http://www.myopenhab.org/">myopenHAB</a>.<br />
<br />
My main reasons for enabling this feature is for integration with cloud services like IFTTT, which I am using for integration with the Google Home Assistant. I'll share more on that topic in another post.<br />
<br />
<br />
<h2>
Plugin Installation</h2>
Log in to your local openHAB installation and navigate to the PaperUI interfact, From here navigate to the Add-ons tab and search for "openHAB Cloud Connector" in the MISC page of add-ons.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLImeJ2UQDfzRo_e4IwCh7WSp2IinaF4KBGyys-Twqjkfuy8fmTnbqnVc4skYospDm6FuB3bwgNzDh_CrdpUcNr1pr2Db15aO1b_WpggU6El4wT1x5q6_7qLS3ZB1lKDbOyS5S5fr3Vmh5/s1600/Install+plugin.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="630" data-original-width="1342" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLImeJ2UQDfzRo_e4IwCh7WSp2IinaF4KBGyys-Twqjkfuy8fmTnbqnVc4skYospDm6FuB3bwgNzDh_CrdpUcNr1pr2Db15aO1b_WpggU6El4wT1x5q6_7qLS3ZB1lKDbOyS5S5fr3Vmh5/s400/Install+plugin.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Installation takes while so be patient. It took around 20 minutes on my Raspberry Pi 3.</div>
<div class="separator" style="clear: both; text-align: left;">
While we are waiting for the add-on to install we will get our myopenHAB account setup and ready for action.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h2 style="clear: both; text-align: left;">
myopenHAB Account Setup</h2>
<div>
Navigate to the <a href="http://www.myopenhab.org/">myopenHAB</a> website and then make your way to the <a href="https://myopenhab.org/login">registration page</a>. Create your account and be sure to verify your account once created. You will be sent a verification email to the registered email address, follow the links to confirm your account. If you don't do this you may end up stuck with your device only ever showing "Offline" even if you have everything configured correctly.</div>
<div>
Once you have setup you account check back in to your openHAB add-on installation. Once it is complete we need to grab a couple of auto-generated strings to link our openHAB add-on installation to the cloud service. We need to grab the UUID and Secret that were generated by the openHAB Cloud add-in and add them to our account:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2X_onpdCj6dYfjssCKdvHF1XNAkrs_hyphenhyphenKPVKY3CQBYVtVp04pO0CXRg-ubOobuUcq_JREbUVoR-N8Cx_KKVoYhy9GEFH9HFRfbR-gEan-oEN1GMUFIuNxd882iFwgyS17UoPv9XHMH7yC/s1600/myopenHAB.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="535" data-original-width="985" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2X_onpdCj6dYfjssCKdvHF1XNAkrs_hyphenhyphenKPVKY3CQBYVtVp04pO0CXRg-ubOobuUcq_JREbUVoR-N8Cx_KKVoYhy9GEFH9HFRfbR-gEan-oEN1GMUFIuNxd882iFwgyS17UoPv9XHMH7yC/s400/myopenHAB.JPG" width="400" /></a></div>
<br /></div>
<div>
Use the following commands to view your UUID and Secret from the command line:</div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> nano /var/lib/openhab2/uuid
nano /var/lib/openhab2/openhabcloud/secret
</code></pre>
<div>
<br /></div>
<div>
Once these settings have been added to myopenHAB if everything was done right you should see your device come online. If not, there are a few things that could have gone wrong that I'll cover in the troubleshooting section below.<br />
<br />
<br />
<h2>
Add-on Configuration</h2>
With the add-on installed the last thing we need to do is enable remote access of our device and exposing items to 3rd party services like IFTTT<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhra_5UJa7I-yF99iyt3JfvihjaDYFlgVHP7CNmdW0BisQX_UimZxhSVb5c8m7zmR5Oa607g8C9XWGI3L2hOzCUZwtTaIK9ZK30_r_oD8u09i-nWmkdT6GdaFZ9FNeeEDAdrg93GhudeqmH/s1600/Configure+plugi.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="632" data-original-width="1365" height="183" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhra_5UJa7I-yF99iyt3JfvihjaDYFlgVHP7CNmdW0BisQX_UimZxhSVb5c8m7zmR5Oa607g8C9XWGI3L2hOzCUZwtTaIK9ZK30_r_oD8u09i-nWmkdT6GdaFZ9FNeeEDAdrg93GhudeqmH/s400/Configure+plugi.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">openHAB Cloud add-on configuration</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGA2nhLSFFZsau8tnXWkN3WKFpK5teQ1FwzFg22qrqF0dxfXePUOUmusHoyJ5idI0ZCG39Wnrj1_RYnecVxlTQjXCCP81PJWbhBXS5E-hmY1yOdPruwW1R4OyuXCABHrlY3NQRcBuueFPr/s1600/Configuration.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="632" data-original-width="1365" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGA2nhLSFFZsau8tnXWkN3WKFpK5teQ1FwzFg22qrqF0dxfXePUOUmusHoyJ5idI0ZCG39Wnrj1_RYnecVxlTQjXCCP81PJWbhBXS5E-hmY1yOdPruwW1R4OyuXCABHrlY3NQRcBuueFPr/s400/Configuration.JPG" width="400" /></a></div>
<br />
Add the items you would like to be exposed to external services like IFTTT here by selecting the items from the drop down box and save your configuration.<br />
<br />
If it has all worked you should now be able to navigate to the myopenHAB page, login and then follow the links to your openHAB dashboard.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO5r72eQPsn70wtxYsqMlK6vcZ97CYjLnD27eJmK42LFinQFWKe3NfgrraDb4VWdQ2nzyQVIg2ijPxd_Q3n3jBOr-6xNY6xdj6vteXFkC5uWrv4BTMzn2zepXhasroiuzfqmruC5pHTH6F/s1600/myopenHAB-dashboard.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="634" data-original-width="1365" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO5r72eQPsn70wtxYsqMlK6vcZ97CYjLnD27eJmK42LFinQFWKe3NfgrraDb4VWdQ2nzyQVIg2ijPxd_Q3n3jBOr-6xNY6xdj6vteXFkC5uWrv4BTMzn2zepXhasroiuzfqmruC5pHTH6F/s400/myopenHAB-dashboard.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">myopenHAB logged in</td></tr>
</tbody></table>
<br />
<br />
<h2>
Troubleshooting</h2>
I ran in to a few issues when connecting my openHAB installation to the myopenHAB cloud service:<br />
<br />
<ol>
<li>I had missed a character off the secret. </li>
<li>I was running an old version of oracle java. I fixed this by simply doing an apt-get update then apt-get upgrade followed by a reboot. There is also another issue with open-jdk that is described in <a href="https://community.openhab.org/t/solved-my-openhab-offline/3075/14">this post</a></li>
</ol>
</div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com2tag:blogger.com,1999:blog-1558655160235390677.post-78373663973884761352017-06-02T19:51:00.001-07:002017-06-04T03:31:38.299-07:00HOME AUTOMATION: openHAB exec2 bindingSince I started with openHAB I've been annoyed that it's not super simple to execute a script with a button press. There is an openHAB2 binding called the "<a href="http://docs.openhab.org/addons/bindings/exec/readme.html">Exec</a>" binding that allows us to do exactly this, but the use of it is a mess in my opinion. The official documentation doesn't really give many good examples of how it can be used and trying to find a good example in the forums is hard because there is a openHAB1 and openHAB2 version of the binding that are used differently.<br />
<br />
The first useful bit of information I came across was <a href="https://github.com/openhab/openhab2-addons/blob/master/addons/binding/org.openhab.binding.exec/ESH-INF/thing/thing-types.xml">github repo XML definition</a> of the Thing type.<br />
This gives an explanation of what the various parameters and what they do.<br />
<br />
Another bit of info that may be useful is how the different elements required for the Exec binding to work tie together:<br />
One Thing tied to a command we want to run<br />
Multiple Items for each Thing (input, output, exit, run, lastexecution)<br />
A sitemap that displays any Items we want to interact with<br />
<br />
Armed with this info lets take a look at a few examples of using the Exec binding:<br />
<br />
<br />
<h4>
Example 1</h4>
<div>
This example executes a python command when the defined button changes states. It does not resend the command if the button is in the OFF state and it is turned OFF again.<br />
<br />
<h3>
<b>Thing:</b></h3>
</div>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;"> Thing exec:command:TV_GF_Vol_Up "TV" [ command="python /home/openhabian/addons/BlackBeanControl/BlackBeanControl.py -c LG_TV_Vol_Up -d Lounge", timeout=15, interval=0, autorun=true ]
Thing exec:command:TV_GF_Vol_Down "TV" [ command="python /home/openhabian/addons/BlackBeanControl/BlackBeanControl.py -c LG_TV_Vol_Down -d Lounge", timeout=15, interval=0, autorun=true ]
</code></pre>
<br />
<h3>
Item:</h3>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;"> String TV_GF_OnOff "TV" { channel="exec:command:TV_GF_OnOff:input" }
String TV_GF_OnOff_Output "TV" { channel="exec:command:TV_GF_OnOff:output" }
Switch TV_GF_OnOff_Running "TV" { channel="exec:command:TV_GF_OnOff:run" }
Number TV_GF_OnOff_ExitValue "TV" { channel="exec:command:TV_GF_OnOff:exit" }
DateTime TV_GF_OnOff_LastExec "TV" { channel="exec:command:TV_GF_OnOff:lastexecution" } </code></pre>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;">
String TV_GF_Vol_Up "TV" { channel="exec:command:TV_GF_Vol_Up:input"}
String TV_GF_Vol_Up_Output "TV" { channel="exec:command:TV_GF_Vol_Up:output"}
Switch TV_GF_Vol_Up_Running "TV" { channel="exec:command:TV_GF_Vol_Up:run"}
Number TV_GF_Vol_Up_ExitValue "TV" { channel="exec:command:TV_GF_Vol_Up:exit" }
DateTime TV_GF_Vol_Up_LastExec "TV" { channel="exec:command:TV_GF_Vol_Up:lastexecution" } </code></pre>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;">
String TV_GF_Vol_Down "TV" { channel="exec:command:TV_GF_Vol_Down:input"}
String TV_GF_Vol_Down_Output "TV" { channel="exec:command:TV_GF_Vol_Down:output"}
Switch TV_GF_Vol_Down_Running "TV" { channel="exec:command:TV_GF_Vol_Down:run"}
Number TV_GF_Vol_Down_ExitValue "TV" { channel="exec:command:TV_GF_Vol_Down:exit" }
DateTime TV_GF_Vol_Down_LastExec "TV" { channel="exec:command:TV_GF_Vol_Down:lastexecution" }
</code></pre>
<div>
<br /></div>
<h3>
Sitemap:</h3>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;"> Switch item=TV_GF_Vol_Up label="Volume Up" mappings=[OFF="+", ON="+"]
Switch item=TV_GF_Vol_Down label="Volume Down" mappings=[OFF="-", ON="-"]
</code></pre>
<br />
<br />
<br />
<h4>
Example 2</h4>
In this example we will create a single button that runs a python script each time the button is pressed.<br />
<br />
<h3>
Things:</h3>
<div>
Not needed as we will be executing the commands from within the rules we create.</div>
<div>
<br /></div>
<h3>
Items:</h3>
This example creates a virtual item that is not tied to a Thing.<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;"> String TV_GF_Power "TV Power"
</code></pre>
<div>
<br /></div>
<h3>
Rules:</h3>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;"> rule "LG TV Power"
when
Item TV_GF_Power received update
then
executeCommandLine("python /home/openhabian/addons/BlackBeanControl/BlackBeanControl.py -c LG_TV_Power -d Lounge", 1000)
end </code></pre>
<br />
<h3>
Sitemaps:</h3>
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: auto;"><code style="word-wrap: normal;"> Switch item=TV_GF_Power mappings=[OFF="Power"]
</code></pre>
<br />
<br />
I've also found the following forum examples useful in developing my Exec scripts and functions.<br />
<a href="https://community.openhab.org/t/trigger-exec-binding-switch-with-hue-emulation-solved/22542?source_topic_id=22912">Online example 1</a>, <a href="https://community.openhab.org/t/openhab-2-exec-binding-2-0-configuration/17708/32">Online example 2</a>Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com1tag:blogger.com,1999:blog-1558655160235390677.post-72893982722629643102017-04-16T04:18:00.005-07:002017-07-05T13:26:10.105-07:00HOME AUTOMATION: Teptron Move control from OpenHABI've <a href="https://andrew-klimovski.blogspot.com.au/2017/03/home-automation-teptron-move-control.html">previously explored</a> how to control the bluetooth version of Teptron Move from a linux PC (or Raspberry Pi) with the built in Bluetooth adapter. While it's interesting to be able to do this from the Linux commands line it's not particularly practical for use in a home automation system. In this post<br />
<br />
I'll explain how to integrate those controls with openHAB for more practical use.<br />
<div>
<br /></div>
<div>
<br /></div>
<h2>
OpenHAB Binding Configuration</h2>
<div>
In order to run a linux script from within openHAB we need to first install the "<a href="http://docs.openhab.org/addons/bindings/exec/readme.html">Exec Binding</a>".<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8zoswp-_GDXvbZi6-t686I1sjtVs_cO5X1L-aL_UgGyx8n-XZyfND2Cxw6dxvlLJ7-Ih0n-wmZSSM-08k2Frp37eTFmaLvKKlj1qMegPgz2w88QQNRGHttKY9ebb3lStbeld2FCYKhRpo/s1600/Exec+Binding.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="147" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8zoswp-_GDXvbZi6-t686I1sjtVs_cO5X1L-aL_UgGyx8n-XZyfND2Cxw6dxvlLJ7-Ih0n-wmZSSM-08k2Frp37eTFmaLvKKlj1qMegPgz2w88QQNRGHttKY9ebb3lStbeld2FCYKhRpo/s320/Exec+Binding.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Exec Binding Installation</td></tr>
</tbody></table>
<br />
<br />
There are a few examples on how to configure the exec binding but none of the examples worked for me. I ended up following <a href="https://community.openhab.org/t/trigger-exec-binding-switch-with-hue-emulation-solved/22542?source_topic_id=22912">this post</a> to get the right combination of Things/Items/Sitemaps working to give the following result:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEoVsW0hfRX6nj6bcKfnyD9qjb11kxsylb7Z3vuXm3ZG7R71ksnDb6I2xyptDvgmP9gYWJ8-viyZX2-so5lfXGtvEe3FjoFj7VIX0llcnu0hL51sFqbmX6n-c9FvfooeJgf7FMyhNDmhNq/s1600/Blinds_Sitemap.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEoVsW0hfRX6nj6bcKfnyD9qjb11kxsylb7Z3vuXm3ZG7R71ksnDb6I2xyptDvgmP9gYWJ8-viyZX2-so5lfXGtvEe3FjoFj7VIX0llcnu0hL51sFqbmX6n-c9FvfooeJgf7FMyhNDmhNq/s320/Blinds_Sitemap.JPG" width="320" /></a></div>
<br />
I'll go in to some more detail below on how I configured my Things/Items/Sitemap to get the units working.<br />
<br />
<br />
There are a few peculiarities in working with the Bluetooth version of the Teptron Move with the command line functions. I've noticed the following inconsistencies:<br />
<br />
<ul>
<li>Sometimes the device does not respond and the command reports an error</li>
<li>Other times the device responds and accepts the commands but does not move</li>
<li>The time between receiving the accepted response and the device moving varies from immediate to ~5 seconds</li>
</ul>
<br />
I've tried a number of workarounds for this but so far I've had the most success with simply just retrying the command multiple times, but this has the issue of pausing the unit motion when the second/third command is resent. I'm not ready to give up on this one just yet, but I'm fast running out of ideas.<br />
<br />
<br />
<h2>
Move Control Script</h2>
Create a new script in the in the openHAB scripts folder:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo nano /etc/openhab/scripts/teptron_move_control.sh
</code></pre>
<br />
Copy the following lines in to the file and save the file:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> #!/bin/sh
RESPONSE=""
# execute the command multiple times
#for i in 1 2 3
for i in 1
do
RESPONSE="$(/home/openhabian/development/csrmesh/bin/csrmesh-cli move --pin 8888 --dest 43:c5:5b:04:00:06 --objid $1 --position $2)"
echo "Response: ${RESPONSE}"
sleep 1
done
</code></pre>
<br />
Now make the script executable with the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> chmod +x /etc/openhab/scripts/teptron_move_command.sh
</code></pre>
<br />
This script accepts two input arguments:<br />
<ol>
<li>The move unit we want to move</li>
<li>The position to be moved to (0 to 255)</li>
</ol>
<div>
Test the command is working as expected, as an example use the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> /etc/openhab/scripts/teptron_move_command.sh 2 255
</code></pre>
<br />
This will command unit 2 to move to the fully opened position.</div>
<br />
<h2>
Things Configuration</h2>
Create a new .things file for the blinds:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo nano /etc/openhab/things/blinds.things
</code></pre>
<br />
Add the following lines:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Thing exec:command:Blinds_GF_Lounge_North "Blinds" [ command="bash /etc/openhab2/scripts/teptron_move_control.sh 1 %2$s", interval=0, autorun=true ]
Thing exec:command:Blinds_GF_Lounge_South "Blinds" [ command="bash /etc/openhab2/scripts/teptron_move_control.sh 2 %2$s", interval=0, autorun=true ]
</code></pre>
<br />
The important part of the command here is the name of the Thing, in this case <i>"Blinds_GF_Lounge_North"</i> and <i>"Blinds_GF_Lounge_South"</i>. These will need to match the name of the items we will create next.<br />
<br />
<br />
<h2>
Items Configuration</h2>
Next we must define items that will take the input from the sitemap and send it as a parameter to the exec binding and execute the script:<br />
<br />
Create a new .items file:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo nano /etc/openhab/items/blinds.items
</code></pre>
<br />
Add the following items:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> String Blinds_GF_Lounge_North_Command "Blinds" { channel="exec:command:Blinds_GF_Lounge_North:input", autoupdate="false" }
String Blinds_GF_Lounge_South_Command "Blinds" { channel="exec:command:Blinds_GF_Lounge_South:input", autoupdate="false" }
</code></pre>
<br />
Ensure the names of the defined items match the names of the things we defined previously.<br />
<br />
<h2>
Sitemap Configuration</h2>
We need to define a couple of switches with custom mapping to command the move units to the "Open" and "Close" positions:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo nano /etc/openhab/sitemaps/default.sitemap
</code></pre>
<br />
Add the following lines where applicable:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Switch item=Blinds_GF_Lounge_North_Command label="North Blinds" mappings=["255"="Open", "0"="Close"]
Switch item=Blinds_GF_Lounge_South_Command label="South Blinds" mappings=["255"="Open", "0"="Close"]
</code></pre>
<br />
If everything was working properly, pressing the buttons on the sitemap should command the move units to the open and closed positions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhdxATmNuFnEAYYE0qAgBAXHbXpk20t1IRxArJoj6fdnkbi7a1NBvamm4RLP2TmuqK9BAteuoR7U73ktEaU7oavagrRBLY5gZpjK2TVi9HTHAf_youkxKK3H6BCaREZzLfFgLk2lMEUdN8/s1600/Blinds_Sitemap.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhdxATmNuFnEAYYE0qAgBAXHbXpk20t1IRxArJoj6fdnkbi7a1NBvamm4RLP2TmuqK9BAteuoR7U73ktEaU7oavagrRBLY5gZpjK2TVi9HTHAf_youkxKK3H6BCaREZzLfFgLk2lMEUdN8/s320/Blinds_Sitemap.JPG" width="320" /></a></div>
<br />
<br />
Technically it should be possible to use a slider here to set the blind position, but I'm yet to work out how to do it.<br />
<br />
Remember the following command is great to be able to debug any openHAB issues:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> tail -f /var/log/openhab2/openhab.log -f /var/log/openhab2/events.log </code></pre>
</div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com6tag:blogger.com,1999:blog-1558655160235390677.post-36445171259717802832017-04-08T16:26:00.000-07:002017-04-08T16:26:04.601-07:00ROBOTICS: Android App for Bluetooth Remote Control RobotsA while back I was tinkering with the MIT App Inventor project and wrote a little android app that would connect to a bluetooth device and send ASCII commands via a bluetooth serial connection. It turned out to be a really handy way to control my robots over bluetooth so I <a href="http://www.societyofrobots.com/robotforum/index.php?topic=13138.0">shared it</a> and made a short <a href="https://www.youtube.com/watch?v=t26Bq6e9Jxc&t=6s">youtube video</a> showing how to use it. It's my most successful youtube video to date and I still get people asking for the codes.<br />
<br />
Since then I taught myself to code for Android and rewrote the app with plans of releasing it on the app store, but never found the motivation to take it all the way. It's been a couple of years since I put any time in to active development of the app, so in the spirit of sharing the codes I've decided to upload <a href="https://github.com/klimbot/BluetoothRemoteControl">my project</a> to Github for anyone who is interested. To make it easier for use I've also included <a href="https://github.com/klimbot/BluetoothRemoteControl/raw/master/app/app-release.apk">a compiled apk</a>.<br />
<br />
<br />
<h2>
The App</h2>
Basically, the app connects to a bluetooth device and creates a serial connection and streams ASCII characters to and from the connected device. Typically the way I use this by assigning specific ASCII characters to buttons, then when coding my android project I interpret the ASCII characters and react based on the command.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz3Et8pt2Dc_lkzZT4nZ1eLHvFS0rv98F8G9fwVS8ruPpvvKKMuD6VqHt_Q9ekDhYf7N-Sl_Irg6-V-skHCfcm-8X5bv3mvxV913-3M9sOtNkhO6M4E9rdRGTZfJZY5O25WbHEVkZJmX4r/s1600/Screenshot_20170407-211007.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgz3Et8pt2Dc_lkzZT4nZ1eLHvFS0rv98F8G9fwVS8ruPpvvKKMuD6VqHt_Q9ekDhYf7N-Sl_Irg6-V-skHCfcm-8X5bv3mvxV913-3M9sOtNkhO6M4E9rdRGTZfJZY5O25WbHEVkZJmX4r/s320/Screenshot_20170407-211007.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Vertical Layout</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQFNEvyLgUFAhzJSQqeuONPVaAexa6p-USYrbdxZUDsN8GKD7QQ5x3PCCX__uAwOxvPvenUQkuFmx8iqA25GvscEOiMs8rbs0B3JgxF485xdu8_bCwGfWLKiSVlKgOTP_QTpQg7sfPPduO/s1600/Screenshot_20170407-211011.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQFNEvyLgUFAhzJSQqeuONPVaAexa6p-USYrbdxZUDsN8GKD7QQ5x3PCCX__uAwOxvPvenUQkuFmx8iqA25GvscEOiMs8rbs0B3JgxF485xdu8_bCwGfWLKiSVlKgOTP_QTpQg7sfPPduO/s320/Screenshot_20170407-211011.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Landscape Layout</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKCXm1ChS-68_VdLRGLLUvMLcaK16Ldk98f26iVYxnsWHnODv1PPMjo3guSa_zJbjdAMM5xlq4EvScXEFCo9hyphenhyphenhGCIOzHQI0iwGZpdqliYoHta3ZCrl9o_v2U8jkwjgxkpbLQ_r-AxB8S2/s1600/Screenshot_20170407-211029.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKCXm1ChS-68_VdLRGLLUvMLcaK16Ldk98f26iVYxnsWHnODv1PPMjo3guSa_zJbjdAMM5xlq4EvScXEFCo9hyphenhyphenhGCIOzHQI0iwGZpdqliYoHta3ZCrl9o_v2U8jkwjgxkpbLQ_r-AxB8S2/s320/Screenshot_20170407-211029.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Pair with Bluetooth device</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSavTwfGmnI1o4yVaZ_sPD9CvHinO6IHjgJpyL7ZGNxDaBPOh2rBC5EvaNNodYxcF9CLZ798CY907mcXaba75NieKIMJXlLq1pXKEMnMrJ8U4nHmkDfPQ_2XU8rZAjrfdZUlVB6auCIyy3/s1600/Screenshot_20170407-211045.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSavTwfGmnI1o4yVaZ_sPD9CvHinO6IHjgJpyL7ZGNxDaBPOh2rBC5EvaNNodYxcF9CLZ798CY907mcXaba75NieKIMJXlLq1pXKEMnMrJ8U4nHmkDfPQ_2XU8rZAjrfdZUlVB6auCIyy3/s320/Screenshot_20170407-211045.png" width="180" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Preferences and Help menu</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
The app also allows you to change the button labels as well as the characters being sent for each button.<br />
<br />
The app requires a minimum of Android 4.0 and has been written to support a number of screen resolutions and configurations.<br />
<br />
<h2>
Features</h2>
Inverted button layout switches the position of the direction keys and action keys:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd4MRaWRwTnnSYYo64SyZiLi7R_foslQdVV7sfTWTATllCVrwfZh8hQDFnEsXWrCwS81U_ZsrSNix47yBqqlVGP18Yf2OI2Go-Dq8FJOHivn1GdDIvc_Wvjc-Z_T_o4VQY3UwREMzT4uXx/s1600/Screenshot_20170407-211048.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd4MRaWRwTnnSYYo64SyZiLi7R_foslQdVV7sfTWTATllCVrwfZh8hQDFnEsXWrCwS81U_ZsrSNix47yBqqlVGP18Yf2OI2Go-Dq8FJOHivn1GdDIvc_Wvjc-Z_T_o4VQY3UwREMzT4uXx/s320/Screenshot_20170407-211048.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibSNJkJ4XS-V7hkiA3fIQdHppqfuLqFnZBznR6tIlzwDrlE-v22OHcxNU3p_2tkndxMxNJIkCnEQB9j7QRWSc6h4U-m7HD5suvOhN1cM243b893UwFlPPTzBBZBUA05bP8zmgYJIH1Y4Fo/s1600/Screenshot_20170407-214556+%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibSNJkJ4XS-V7hkiA3fIQdHppqfuLqFnZBznR6tIlzwDrlE-v22OHcxNU3p_2tkndxMxNJIkCnEQB9j7QRWSc6h4U-m7HD5suvOhN1cM243b893UwFlPPTzBBZBUA05bP8zmgYJIH1Y4Fo/s320/Screenshot_20170407-214556+%25281%2529.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLo_1Ssvxyh7jspGbXSq1ysZL1Ia3m9DIQqZ0Q9nrrIhMHk4dfb_VpoIJKAa4ZSZoj2bMKF9oYAQ-mOaQfJRoZde57MeDIPkajprE6Jhmtpdxdu9xXSkDrbagM-Pcl4Whk38rCPRnNxhuO/s1600/Screenshot_20170407-214600+%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLo_1Ssvxyh7jspGbXSq1ysZL1Ia3m9DIQqZ0Q9nrrIhMHk4dfb_VpoIJKAa4ZSZoj2bMKF9oYAQ-mOaQfJRoZde57MeDIPkajprE6Jhmtpdxdu9xXSkDrbagM-Pcl4Whk38rCPRnNxhuO/s320/Screenshot_20170407-214600+%25281%2529.png" width="180" /></a></div>
<br />
<br />
Receive commands from your robot with the Feedback Group scale scale bars. Commands need to be sent over serial in the format "SB1=XX" where XX is a number from 0 to 100.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQFXdULz80ADTZdskQEpAInKPzU_4VBRmqx1ppvBUSykIEC-JutQ0iCfgVXep5IlUmuNs2rCk6ptoDCe9ztptumjtIjIM6pexoKwsiZMCr4shXo5l3ou4r9Vez8hOFSCG1rRk-qdTgxTyc/s1600/Screenshot_20170407-211105.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQFXdULz80ADTZdskQEpAInKPzU_4VBRmqx1ppvBUSykIEC-JutQ0iCfgVXep5IlUmuNs2rCk6ptoDCe9ztptumjtIjIM6pexoKwsiZMCr4shXo5l3ou4r9Vez8hOFSCG1rRk-qdTgxTyc/s320/Screenshot_20170407-211105.png" width="180" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg04I8vBzM2c2PjNZ42Xr8IPicbW-O-Zip3Z1KMNgxhbVmRUKiYgO9vAZSgyhC9-LqmTqc2-CH_k2gbK7sqtf9gqS8Szd45rgkskjKswljl9V-jtVz_-rHh44expfgbAX66Sk7XSZDtHV9p/s1600/Screenshot_20170407-214847.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg04I8vBzM2c2PjNZ42Xr8IPicbW-O-Zip3Z1KMNgxhbVmRUKiYgO9vAZSgyhC9-LqmTqc2-CH_k2gbK7sqtf9gqS8Szd45rgkskjKswljl9V-jtVz_-rHh44expfgbAX66Sk7XSZDtHV9p/s320/Screenshot_20170407-214847.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJQgI1oFuBSmGqXpq8IiBQ1701wHZe3g7CUnWUn_7Avba8UjX1aJJmFrZIE1ODeq-x6_NamP8uCRxHyEpgkw8Mq6b3UgIlL9k_GZLnYwh4UzqjAwii220nw2kX2lT3P-644FVttAkN9-aH/s1600/Screenshot_20170407-214912.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJQgI1oFuBSmGqXpq8IiBQ1701wHZe3g7CUnWUn_7Avba8UjX1aJJmFrZIE1ODeq-x6_NamP8uCRxHyEpgkw8Mq6b3UgIlL9k_GZLnYwh4UzqjAwii220nw2kX2lT3P-644FVttAkN9-aH/s320/Screenshot_20170407-214912.png" width="180" /></a></div>
<br />
<br />
<h2>
Known Bugs</h2>
Pairing a new bluetooth device is clunky. I've had the most success in performing the pairing from within the settings menu first, then going back in to the app and connecting to the bluetooth device.<br />
<br />Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-43245292945282937722017-04-03T04:49:00.002-07:002017-04-03T21:08:05.839-07:00HOME AUTOMATION: ELK/NESS M1 Home Alarm Controller with OpenHAB over SerialWhen I installed the NESS M1 home automation controller and home alarm I had plans of integrating it in to my overall setup. I purchased an M1XEP with plans of exposing the alarm control to the network but ran in to setup issues that I was never able to resolve.<br />
<div>
<br /></div>
<div>
When I installed my openHAB controller I looked for a binding for the NESS/ELK but was not able to find one. There are some active conversations on the forums but no available bindings, so I decided to try my hand at getting something going. I'm using a USB to Serial adaptor plugged from the serial port of my home alarm directly in to my Raspberry Pi running openHAB2.</div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
OpenHAB Serial Binding</h2>
<div>
First thing to do is to install and configure the serial binding. I have already covered this in an <a href="https://andrew-klimovski.blogspot.com.au/2017/03/home-automation-openhab2-serial-binding.html">older post</a>.<br />
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br /></div>
<div>
<br /></div>
<h2>
Reading Zone States</h2>
<div>
The easiest thing to start with is to read the zone state from the NESS alarm controller. With serial configured this is simply a matter of reading the serial input data and interpreting the commands based on the <a href="http://www.pdf-zoo.com/elk-products/5287/elk-m1-rs232-protocol">well documented</a> serial protocol for the controller.</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgDpoo5nqWpYhHVYIF1VZN5yxiPfGu6cyTu6PMUzOnCkD47WsY2aE53y9mDmW8c3seyNkAFzCm6gViLF-dhxSPyNI8-6k_NIt3he6jOACbL-As0lZuDscmXLjcJrwx58_YEZuqXoBjLaW3/s1600/ELK-RS232.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgDpoo5nqWpYhHVYIF1VZN5yxiPfGu6cyTu6PMUzOnCkD47WsY2aE53y9mDmW8c3seyNkAFzCm6gViLF-dhxSPyNI8-6k_NIt3he6jOACbL-As0lZuDscmXLjcJrwx58_YEZuqXoBjLaW3/s320/ELK-RS232.JPG" width="246" /></a></div>
<br />
Here are the files I have used to mirror the state of the motion sensors on my home alarm by reading the zone states:</div>
<div>
<br />
<br /></div>
<div>
alarm.items</div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Switch AlarmUpdate "Alarm Update" { serial="/dev/ttyUSB0@115200" }
String AlarmMessage "Alarm Message" { serial="/dev/ttyUSB0@115200" }
Group gAlarm_PIR
Contact Alarm_PIR_Zone1 (gAlarm_PIR)
Contact Alarm_PIR_Zone2 (gAlarm_PIR)
Contact Alarm_PIR_FF_MasterBedroom "Master Bedroom Motion Sensor [%s]" (gAlarm_PIR)
Contact Alarm_PIR_Zone4 (gAlarm_PIR)
Contact Alarm_PIR_Nursery "Nursery Motion Sensor [%s]" (gAlarm_PIR)
Contact Alarm_PIR_FF_Stairs "Stairs Motion Sensor [%s]" (gAlarm_PIR)
Contact Alarm_PIR_GF_Lounge "Lounge Motion Sensor [%s]" (gAlarm_PIR)
Contact Alarm_PIR_GF_Stairs "Basement Stairs Motion Sensor [%s]" (gAlarm_PIR)
</code></pre>
<div>
<br />
init.rules<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> rule "Init"
when
System started
then
// let openHAB settle and give other rules the chance to fire
createTimer(now.plusSeconds(180)) [|
gAlarm_PIR?.members.forEach[g |
g.postUpdate(CLOSED)
]
end
</code></pre>
<br />
<br />
alarm.rules<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> import java.lang.Integer.*
val AlarmMemoryMessage = "AM"
val ZoneChangedMessage = "ZC"
val NetworkAdapterPing = "XK"
val ZoneStatusTable_NormalUnconfigured = "0"
val ZoneStatusTable_NormalOpen = "1"
val ZoneStatusTable_NormalEOL = "2"
val ZoneStatusTable_NormalShort = "3"
val ZoneStatusTable_TroubleOpen = "5"
val ZoneStatusTable_TroubleEOL = "6"
val ZoneStatusTable_TroubleShort = "7"
val ZoneStatusTable_ViolatedOpen = "9"
val ZoneStatusTable_ViolatedEOL = "A"
val ZoneStatusTable_ViolatedShort = "B"
val ZoneStatusTable_BypassedOpen = "D"
val ZoneStatusTable_BypassedEOL = "E"
val ZoneStatusTable_BypassedShort = "F"
rule "Interpret Alarm Command"
when
Item AlarmMessage received update
then
var lines = AlarmMessage.state.toString.split('\n')
lines.forEach[line |
if(line.length > 6) {
var messageLength = line.substring(0,2)
var commandType = line.substring(2,4)
var checksum = line.substring(line.length-3, line.length-1)
//logInfo("alarm", "Message:" + line + " Len:" + messageLength + " Command:" + commandType)
if(commandType == AlarmMemoryMessage) {
var alarmMemoryAreas = line.substring(4, 12)
}
else if(commandType == ZoneChangedMessage) {
else if(commandType == ZoneChangedMessage) {
var int zoneNumber = Integer::parseInt(line.substring(4,7))
var zoneStatus = line.substring(7,8)
//logInfo("alarm", "Zone:" + zoneNumber + " Status:" + zoneStatus)
//logInfo("alarm", "gAlarm_PIR:" + gAlarm_PIR.members.filter(g | g.name == "Alarm_PIR_GF_Lounge").toString)
var zone = Alarm_PIR_GF_Lounge
var state = CLOSED
// case statement setting the zone item from the message received
switch zoneNumber {
case zoneNumber == 1 : zone = Alarm_PIR_Zone1
case zoneNumber == 2 : zone = Alarm_PIR_Zone2
case zoneNumber == 3 : zone = Alarm_PIR_FF_MasterBedroom
case zoneNumber == 4 : zone = Alarm_PIR_Zone4
case zoneNumber == 5 : zone = Alarm_PIR_FF_Nursery
case zoneNumber == 6 : zone = Alarm_PIR_FF_Stairs
case zoneNumber == 7 : zone = Alarm_PIR_GF_Lounge
case zoneNumber == 8 : zone = Alarm_PIR_GF_Stairs
}
// set the state of the zone from the message received
if(zoneStatus == ZoneStatusTable_NormalUnconfigured) {
state = CLOSED
}
else if(zoneStatus == ZoneStatusTable_NormalOpen) {
state = CLOSED
}
else if(zoneStatus == ZoneStatusTable_NormalEOL) {
state = CLOSED
}
else if(zoneStatus == ZoneStatusTable_TroubleOpen) {
state = OPEN
}
else if(zoneStatus == ZoneStatusTable_TroubleEOL) {
state = OPEN
}
else if(zoneStatus == ZoneStatusTable_TroubleShort) {
state = OPEN
}
else if(zoneStatus == ZoneStatusTable_ViolatedOpen) {\
state = OPEN
}
else if(zoneStatus == ZoneStatusTable_ViolatedEOL) {
state = OPEN
}
else if(zoneStatus == ZoneStatusTable_ViolatedShort) {
state = OPEN
}
else {
state = CLOSED
}
postUpdate(zone, state)
}
else if(commandType == NetworkAdapterPing) {
}
else {
//logInfo("alarm", "No code match")
}
}
]
end
</code></pre>
<br />
<br />
Add the following lines to your sitemap:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Frame label="Ground Floor Stairs" {
Text item=Alarm_PIR_GF_Stairs icon="motion"
}
</code></pre>
<br />
<br />
<h2>
Testing</h2>
View the sitemap and we should see the motion sensor updates coming through<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNXiAPf5bPu-vGlpH8mHK3H6q3GdHdUmz9slWUVmogaw_t4tzmHBJDT-dOuHa08pCVk4yfXUspu7gYkOA96xT8Dnmw0HvgGmy_9TO1wyruO68m5KB04mMFS1bpp6b3qnlj6SF2Cl9XK9_9/s1600/OpenHAB_PIR.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNXiAPf5bPu-vGlpH8mHK3H6q3GdHdUmz9slWUVmogaw_t4tzmHBJDT-dOuHa08pCVk4yfXUspu7gYkOA96xT8Dnmw0HvgGmy_9TO1wyruO68m5KB04mMFS1bpp6b3qnlj6SF2Cl9XK9_9/s320/OpenHAB_PIR.png" width="237" /></a></div>
<br />
<br />
Test the sitemap is working as expected with the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> tail -f /var/log/openhab2/openhab.log -f /var/log/openhab2/events.log tail -f /var/log/openhab2/openhab.log -f /var/log/openhab2/events.log
</code></pre>
<br />
If everything is working as expected you should see updates coming through:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ==> /var/log/openhab2/events.log <==
2017-04-03 13:44:24.818 [GroupItemStateChangedEvent] - gAlarm_PIR changed from CLOSED to UNDEF through Alarm_PIR_GF_Lounge
2017-04-03 13:44:28.191 [ItemStateChangedEvent ] - AlarmMessage changed from 0AZC007900C2
1EAS000000000111111100000000000F
0CAM000000007F
to 0AZC007200C9
1EAS000000001111111100000000000E
0CAM000000007F
2017-04-03 13:46:26.579 [ItemStateChangedEvent ] - Alarm_PIR_GF_Lounge changed from OPEN to CLOSED
</code></pre>
<br />
<br />
<h3>
Update</h3>
There is a bug in openHAB2 that stops icon updates on the sitemap as the states are updated. It's documented <a href="https://community.openhab.org/t/icons-no-longer-updating-in-basicui/15199/25">here</a>. The solution is to restart the OpenHAB server.<br />
<br /></div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com8tag:blogger.com,1999:blog-1558655160235390677.post-53081415209950836172017-03-27T03:35:00.002-07:002017-03-27T03:36:34.341-07:00HOME AUTOMATION: OpenHAB2 Serial Binding on Raspberry PiI have always wanted to enable my home automation setup with per-room presence detection. With this in mind I purchased and installed an ELK/NESS home alarm with automation capability.<br />
<br />
I haven't been able to find any decent OpenHAB binding for the alarm, and after recently giving up on getting my M1XEP serial to network box for my alarm working I've decided to try my hand at rolling my own serial solution. Here I'll discuss how I got the serial configuration up and running.<br />
<br />
<h2>
Installation</h2>
Install the <a href="http://docs.openhab.org/addons/bindings/serial1/readme.html">binding </a>from the configuration GUI<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii28C6_J8vT1CC83c3hBy0biywhitHTMnP5YdtZrcQFEj4ehPnKrnaxunhNxhq-EsqDSxtVdnU-FGuwVzYTfzOa51brMjxThdVJGduy5b7b-azicu840U-zhtejh1rdUbSgpip0d0wWfbG/s1600/OpenHAB_Serial.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii28C6_J8vT1CC83c3hBy0biywhitHTMnP5YdtZrcQFEj4ehPnKrnaxunhNxhq-EsqDSxtVdnU-FGuwVzYTfzOa51brMjxThdVJGduy5b7b-azicu840U-zhtejh1rdUbSgpip0d0wWfbG/s320/OpenHAB_Serial.JPG" width="320" /></a></div>
<br />
I'm using a USB to Serial adapter, but other serial devices should also show up as serial devices if they have been recognised by the kernel. You can check this with the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> dmesg
</code></pre>
<br />
Or to view messages relating to the serial port configuration use the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> dmesg | grep tty
</code></pre>
This should tell you what port was assigned to your USB to Serial adapter, in my case ttyUSB0<br />
<br />
Check which users have access to the serial port with the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ll /dev/ttyUSB0
</code></pre>
<br />
Output should look something like:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> crw-rw---- 1 root dialout 188, 0 Mar 27 10:03 /dev/ttyUSB0
</code></pre>
<div>
<br /></div>
You may need to add the default user to the dialout group:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo adduser openhabian dialout
</code></pre>
<br />
<br />
It's a good time to check the serial connection to make sure it's working as expected. You can use the GNU screen command to view the serial port from the command line:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> screen /dev/ttyUSB0 115200
</code></pre>
<br />
The screen command won't exit with the typical commands like CTRL-X or CRTL-Z, to exit the screen command enter 'CTRL-a' then press '\', then hit 'Y' to exit the screen.<br />
<br />
Now that we have the binding installed and confirmed the serial port is working as expected we can continue with the OpenHAB setup<br />
<br />
<h2>
OpenHAB2 Configuration </h2>
I created and 'alarm.items' file to store alarm related configuration info:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Switch AlarmUpdate "Alarm Update" { serial="/dev/ttyUSB0@115200" }
String AlarmMessage "Alarm Message" { serial="/dev/ttyUSB0@115200" }
</code></pre>
<br />
and a 'alarm.rules' file with the following:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ule "Interpret Alarm Command"
when
Item AlarmMessage received update
then
logDebug("alarm", "Alarm message updated")
end
</code></pre>
<br />
Check everything is working with the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> tail -f /var/log/openhab2/openhab.log -f /var/log/openhab2/events.log
</code></pre>
<br />
And you should see log messages like the following:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> 2017-03-27 12:08:27.946 [ItemStateChangedEvent ] - AlarmMessage changed from 0AZC007200C9
1EAS000000001111111100000000000E
0CAM000000007F
to 16XK2708212270117011006C
</code></pre>
<br />
Now that the serial binding is working we can move on to interpreting the data!Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-31376278516301844862017-03-13T00:54:00.000-07:002017-03-13T00:54:49.094-07:00HOME AUTOMATION: MiLight/LimitlessLED/Easybulb OpenHAB ConfigurationI've been thinking about wireless lighting control for a while now and tested out the space with the MiLight wireless controlled light bulbs.<br />
<br />
My initial use case was focused around bulb dimming and while I realise I could have achieved this with a simple dimmer switch costing around 20 bucks from Bunnings, the cost of hiring an Electrician to come to wire a single switch would easily run be over $100. I know some people take to doing this themselves but you need to remember<a href="http://www.esv.vic.gov.au/For-Consumers/Choosing-and-using-a-tradesperson/Electricity-tradespeople"> this is illegal</a> in Australia.<br />
<br />
<br />
<h2>
The Research</h2>
The majority of my house is fitted with modern downlights that use the GU10 socket. This is a pretty common fitting type so the number of options is quite large. Here are a few of the options I considered:<br />
<ul>
<li>MiLight/LimitlessLED/Easybulb - 15USD and around 10USD for a bridge</li>
<li>Phillips Hue - 4 wireless bulbs and a bridge at $399 or $89 per bulb</li>
<li>LiFX GU10 WiFi bulbs - 4 wireless downlights at $120 or $40 per bulb</li>
</ul>
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
</div>
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; margin: 0px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
As my main use case was brightness control I went for the MiLight bulbs that I bought from the <a href="http://www.limitlessled.com/product-category/limitlessled-smart-light-bulbs/">LimitlessLED </a>website.</div>
<i><b><br /></b></i>
<i><b>While the cheapest, the MiLight bulbs have downside of no publishing their state when the lights are turned on.</b></i><br />
<br />
This may not sound like a big deal, but after having used the bulbs in my home automation setup I can say that this limitation is quite annoying as there is no easy way to manage the state of the bulbs in your home automation setup. Unless you can see the lights left on you don't really know what state they are in, so the only useful feature when you are away is the blanket "All Off". It's not the worst but it's definitely not ideal.<br />
<br />
The MiLight bulbs are not Wi-Fi, they use the a 2.4GHz wireless protocol that requires a Wi-Fi bridge to connect it to your home network. There are a few limitations with these Wi-Fi bridges and some folks have <a href="http://blog.christophermullins.com/2017/02/11/milight-wifi-gateway-emulator-on-an-esp8266/">developed their own bridges</a> that overcome these limitations, but I'm going to be sticking with the standard as the <a href="http://docs.openhab.org/addons/bindings/milight/readme.html">OpenHAB MiLight binding</a> has been designed to work with this device.<br />
<br />
<br />
<div>
<h2>
Setting Up Your MiLight Bridge</h2>
</div>
<div>
Follow the MiLight <a href="http://www.plusrite.com.au/content/Manual%20Instruction%20for%20MiLight%20Wifi%20LED%20Controller.pdf">instructions </a>to set up your bridge to control the bulb groups in your house using the Android or iOS apps. Here are a few tips:<br />
<ul>
<li>If you are using the Android app I've noticed it works much better on an old phone in airplane mode. The app experience on Android Nougat is horrible</li>
<li>Make sure you assign a static IP for your Wi-Fi bridge on your router</li>
<li>Once you have taught the bridge your light groups make a note so your don't forget which group was associated with each channel of the bridge</li>
<li>Each bridge can only control 4 groups of WW/CW and 4 groups of RGB/W bulbs</li>
<li>Each bridge has an "All Off" channel. Think about how many bridges you might want to make this function useful. In my setup I have 1 bridge per floor.</li>
</ul>
</div>
<div>
<br />
<br /></div>
<div>
<h2>
MiLight Wi-Fi Bridge with OpenHAB</h2>
</div>
<div>
I follow these steps to get my MiLight bulbs set up with my OpenHAB installation:</div>
<div>
<ul>
<li>Navigate to the PaperUI page of your OpenHAB installation to configure you devices</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjagSwoVOAl164pOTIN0S6A5qra4c05deyKzoPH2z8aKsjbzTXXjwV_KEYAjMTbOpcD0Ro5NJmMb9d_7MqGoFrnReadyPJ-ApjrjyzwS_gtOZJOS420R8JJrVjMimpvqlk7z4r5Lv1GzRiu/s1600/PaperUI.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjagSwoVOAl164pOTIN0S6A5qra4c05deyKzoPH2z8aKsjbzTXXjwV_KEYAjMTbOpcD0Ro5NJmMb9d_7MqGoFrnReadyPJ-ApjrjyzwS_gtOZJOS420R8JJrVjMimpvqlk7z4r5Lv1GzRiu/s320/PaperUI.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">PaperUI Configuration</td></tr>
</tbody></table>
<br />
<ul>
<li>Install the MiLight add-on </li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEZxncHFMHqPsNDm3lUNr1HJfM3KLYepgSKHYmpeSeS369BgPNKZl4Km7vA7OIbfr2N3aSlux_Z9El_9W-5EQAhtkkiGmoVpnclJyK8x-BqLzjsVsGq_SGEuxJJmwj-78dT2amgF9iZcwv/s1600/Add-ons+MiLight.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEZxncHFMHqPsNDm3lUNr1HJfM3KLYepgSKHYmpeSeS369BgPNKZl4Km7vA7OIbfr2N3aSlux_Z9El_9W-5EQAhtkkiGmoVpnclJyK8x-BqLzjsVsGq_SGEuxJJmwj-78dT2amgF9iZcwv/s320/Add-ons+MiLight.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">MiLight Add-on</td></tr>
</tbody></table>
<br />
<ul>
<li>Navigate to the inbox and search for new devices</li>
<li>At this point you will see a number of devices listed under the MiLight services in the inbox </li>
<ul>
<li>4 channels of WW/CW</li>
<li>4 channels of RGB/W</li>
<li>1 channel of WW/CW all off</li>
<li>1 channel of RGB/W all off </li>
</ul>
</ul>
</div>
<div>
</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQQgzSQ6u4EtT2I6PT45lDibXSwOp6GJWHldLzIccB3OZcq2mcPuILQarqQ4EHXRuoOHkTuRRqDhZJQtlYnuKaLcLki6qylRxe17dxmQwHNsQ8YjIrpGTzn7xVTPVlnz4jktVQjCWipGNb/s1600/AddMiLight.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQQgzSQ6u4EtT2I6PT45lDibXSwOp6GJWHldLzIccB3OZcq2mcPuILQarqQ4EHXRuoOHkTuRRqDhZJQtlYnuKaLcLki6qylRxe17dxmQwHNsQ8YjIrpGTzn7xVTPVlnz4jktVQjCWipGNb/s320/AddMiLight.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.8px;">MiLight Bridge Channel</td></tr>
</tbody></table>
</div>
<div>
Now we need to add the devices be previously taught the Wi-Fi bridge in the setup step. This is done by clicking the check icon on the device we want to add, then follow the steps to add the device.<br />
<br />
<b><i>I followed the advice in the <a href="http://docs.openhab.org/tutorials/beginner/configuration.html">OpenHAB instructions</a> and set the system to enable "Item Linking" to make the addition of Things easier.</i></b><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqYGYXjNSBvkrapy4jcU6eB4HhbkLe0t1OYHzmW435Xu2C30_ZqaaLfG4ksfQ-f78sZDk9uIbLHcS6JIzHU6ZhTL8lRBICUGttJpXJmY3Qc1N7ItHXfr6pMtafBKz_Jt_juyGKs0RarNao/s1600/picture_11.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqYGYXjNSBvkrapy4jcU6eB4HhbkLe0t1OYHzmW435Xu2C30_ZqaaLfG4ksfQ-f78sZDk9uIbLHcS6JIzHU6ZhTL8lRBICUGttJpXJmY3Qc1N7ItHXfr6pMtafBKz_Jt_juyGKs0RarNao/s320/picture_11.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Item Linking configuration</td></tr>
</tbody></table>
<br /><br />
Once you have added the devices you plan to use the next thing to do is check they are working as expected via the configuration panel.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzumw6ZMCYAwxE0_k8eHf9XKk5E8R4e0CoKryO94ut9YLxQBv0KJ1oPZF6yOe5zbElt__KSGONImpp5Ylo9Nz3jPHotJiw77W9LL2uRLHrW5yiGas2c0D4VOLNxObGCBOer0I66N8AzoUz/s1600/OpenHAB_MiLight_Configuration.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="143" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzumw6ZMCYAwxE0_k8eHf9XKk5E8R4e0CoKryO94ut9YLxQBv0KJ1oPZF6yOe5zbElt__KSGONImpp5Ylo9Nz3jPHotJiw77W9LL2uRLHrW5yiGas2c0D4VOLNxObGCBOer0I66N8AzoUz/s320/OpenHAB_MiLight_Configuration.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Testing Things in configuration panel</td></tr>
</tbody></table>
<br /></div>
<div>
<br /></div>
<div>
If your device's aren't working at this point you'll need to go back to the bridge setup step and make sure everything is working there. </div>
<div>
<br /></div>
<div>
<br />
<h2>
OpenHAB .items Configuration</h2>
With the devices now added as Things in your OpenHAB installation we need to add the bulbs as a .items file to get them running with our user interface.<br />
Navigate to the items folder of the OpenHAB installation folder and create a new .items file:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> cd /etc/openhab2/items/
sudo nano lights.items
</code></pre>
<br />
Here we will add the devices we wish to use with our user interface. The <a href="http://docs.openhab.org/addons/bindings/milight/readme.html">MiLight binding</a> gives some examples of how to configure the devices, but for quick reference this is how it's done.<br />
<br />
<ul>
<li>Get the unique ID of the device you want to add from the Things banner of the Configuration panel. You need to click the Thing and view the available channels</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJml7p5TUXH7rw3JKUgK5cXdFs5h7WCS-IWmqxwm1nYOhqZ-V25Ea_KCIFQcJFJmcNNVw9y-H1F-c2N2VIW3E3vou0yxEafzMndI9u0qtq6sEHDGq_MXkmnUxv5TMIw19FQWf80SHl27Bk/s1600/OpenHAB_MiLight_2.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJml7p5TUXH7rw3JKUgK5cXdFs5h7WCS-IWmqxwm1nYOhqZ-V25Ea_KCIFQcJFJmcNNVw9y-H1F-c2N2VIW3E3vou0yxEafzMndI9u0qtq6sEHDGq_MXkmnUxv5TMIw19FQWf80SHl27Bk/s320/OpenHAB_MiLight_2.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click the Thing you want to add to the .items file</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjQlzwotOAT_UJTcC2VY85qHY8ktTxK71SC3CYy8NJ3whyg2O0wSOX-Eoank89K9WvHapJm7xCWCruMKmMkn5Vir4bCjVyyF7EUvPd_YDDrbD0wN8CMYhBxbAWJcm9C2ni1NSAoZ0ZrP39/s1600/OpenHAB_MiLight_3.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="148" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjQlzwotOAT_UJTcC2VY85qHY8ktTxK71SC3CYy8NJ3whyg2O0wSOX-Eoank89K9WvHapJm7xCWCruMKmMkn5Vir4bCjVyyF7EUvPd_YDDrbD0wN8CMYhBxbAWJcm9C2ni1NSAoZ0ZrP39/s320/OpenHAB_MiLight_3.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Copy the channel you want to use</td></tr>
</tbody></table>
<br />
<ul>
<li>Add the ID to the item and give it a unique name. Here is an example:</li>
</ul>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Switch Light_GF_Laundry_OnOff {channel="milight:whiteLed:ACCF23508A5A:1:ledbrightness"}
Switch Light_GF_Laundry_NightMode {channel="milight:whiteLed:ACCF23508A5A:1:lednightmode"}
Dimmer Light_GF_Laundry_Temperature {channel="milight:whiteLed:ACCF23508A5A:1:ledtemperature"}
Dimmer Light_GF_Laundry_Brightness {channel="milight:whiteLed:ACCF23508A5A:1:ledbrightness"}
</code></pre>
<br />
<ul>
<li>Repeat this process for all the devices you want to add, then move on to the sitemap</li>
</ul>
<b><i>Note: the MiLight binding does not expose and on/off state for the bulbs, rather you need to define a switch for the brightness to control the on/off and a dimmer for the brightness adjustment both using the same channel</i></b></div>
<div>
<b><i><br /></i></b></div>
<div>
<b><i><br /></i></b>
<br />
<h2>
OpenHAB Sitemap Configuration</h2>
With the devices added to your items file now we can add them to your sitemap. This is the file that outlays the user interface for user interaction with the OpenHAB setup.<br />
<br />
Navigate to the OpenHAB installation directory and then to the sitemap directory. If you are coming from a fresh installation you probably won't have anything in here other than a readme.txt file so you will also need to create a default.sitemap file.<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> cd /etc/openhab2/sitemaps/
sudo nano default.sitemap
</code></pre>
<br />
We will start with a basic working sitemap to test the functions of the devices we just added.<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sitemap default label="Test Layout" {
Frame label="Laundry" {
Switch item=Light_GF_Laundry_OnOff label="On/Off"
Slider item=Light_GF_Laundry_Brightness label="Brightness"
Switch item=Light_GF_Laundry_NightMode label="Night Mode"
}
}
</code></pre>
<br />
And here is the output:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWswoEBM-o2FRMY_c4bbozlzY9EMx6aVFDytxaEL8HUjOA9YAt7C9sLvScRFLs1UP95Yh87R16aReQ2TK_rccMLA_QL3uf3359gHXj-zM8EhcZCwcNnd3gboVaIsndVw4I9RqdBSzhNurg/s1600/OpenHAB_TestLayout.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWswoEBM-o2FRMY_c4bbozlzY9EMx6aVFDytxaEL8HUjOA9YAt7C9sLvScRFLs1UP95Yh87R16aReQ2TK_rccMLA_QL3uf3359gHXj-zM8EhcZCwcNnd3gboVaIsndVw4I9RqdBSzhNurg/s320/OpenHAB_TestLayout.JPG" width="320" /></a></div>
<br /></div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com3tag:blogger.com,1999:blog-1558655160235390677.post-49497869094650186252017-03-12T00:27:00.005-08:002018-03-15T20:50:41.936-07:00HOME AUTOMATION: Teptron move control from Linux<b><i>UPDATE: </i></b><i>this method does not appear to work with the latest Teptron Move firmware. The developer of csrmesh is looking in to the problem but there is no current solution for controlling the Teptron Move from anything other than the app.</i><br />
<br />
My biggest pain point with the Teptron Move automated blinds device at the moment is the lack of app updates and any functionality other than just simply commanding the blinds from my phone. Because of this I have basically removed the devices from my blinds. You can read more about my issues with the device in <a href="https://andrew-klimovski.blogspot.com.au/2017/01/home-automation-automated-blinds.html">an old post</a>.<br />
<br />
I recently started to think about how I could potentially expose the CSR bluetooth mesh that the Move uses to my wireless network. This would allow me to get the automation I'm looking for out of my OpenHAB controller. I came across <a href="https://github.com/nkaminski/csrmesh">a project on GitHub</a> claiming to have reverse engineered the CSRMesh protocol for the Teptron Move and decided to give it a shot.<br />
<br />
I did a little more digging and found some posts on the <a href="https://www.domoticz.com/forum/viewtopic.php?t=8683">domoticz forums</a> talking about how to integrate the linux script with the domoticz home automation solution to automated the Move units, so I decided to investigate the possibility of integrating the devices with my OpenHAB system.<br />
<div>
<br />
<h2>
Installing The Script</h2>
</div>
<div>
Git is not installed on the Ubuntu image for the Pine64. Install with the following commands:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> apt-get install git
</code></pre>
<br />
If it's the first time using git on your machine you need to:<br />
<ul>
<li>Generate an rsa key </li>
<li>Follow the <a href="https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/">Github instructions</a> to add the rsa key to you github account</li>
</ul>
<div>
I also found <a href="https://help.github.com/articles/error-permission-denied-publickey/">this article</a> useful to debug my problem.</div>
<br />
If you don't follow these steps you will get the error:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Permission denied (publickey).
fatal: Could not read from remote repository.
</code></pre>
<div>
<br /></div>
Now create a new directory clone the csrmesh repository into that directory:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> mkdir Downloads
cd Downloads
git clone git@github.com:nkaminski/csrmesh.git
</code></pre>
<br />
Build and install the project:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> python setup.py build
sudo python setup.py install
</code></pre>
<br />
The script also needs the bluez software installed:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo apt-get installed bluez
</code></pre>
<br />
If you are trouble getting your bluetooth running on an Raspberry Pi 3 with OpenHABian I have explained how I did it in <a href="https://andrew-klimovski.blogspot.com.au/2017/03/home-automation-openhab2-on-raspberry.html">an older post</a>.<br />
<br />
<br />
<h2>
Bluetooth Setup</h2>
If your device doesn't support Bluetooth natively you will need to do some work with a USB Bluetooth adapter to get connected to the Move units.<br />
<br />
Insert the USB adapter in to the Pine64 and run the following command to check the device was recognised:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> dmesg
</code></pre>
<br />
If the device was recognised by the linux kernel you should see an output something like this<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> [449253.083342] input: Logitech Logitech BT Mini-Receiver as /devices/soc.0/1c1b000.ohci1-controller/usb4/4-1/4-1.2/4-1.2:1.0/input/input5
[449253.083769] hid-generic 0003:046D:C71B.0001: input: USB HID v1.11 Keyboard [Logitech Logitech BT Mini-Receiver] on usb-sunxi-ohci-1.2/input0
[449253.159418] usb 4-1.3: new full-speed USB device number 4 using sunxi-ohci
[449253.303636] input: Logitech Logitech BT Mini-Receiver as /devices/soc.0/1c1b000.ohci1-controller/usb4/4-1/4-1.3/4-1.3:1.0/input/input6
[449253.304398] hid-generic 0003:046D:C71C.0002: input,hiddev0: USB HID v1.11 Mouse [Logitech Logitech BT Mini-Receiver] on usb-sunxi-ohci-1.3/input0
[449253.581549] usb 4-1.1: new full-speed USB device number 5 using sunxi-ohci
[449253.750067] usbcore: registered new interface driver btusb
[449253.875233] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[449253.875245] Bluetooth: BNEP filters: protocol multicast
[449253.875282] Bluetooth: BNEP socket layer initialized
[470188.654809] sunxi-bt bt.28: set block: 0
[470188.654971] sunxi-bt bt.28: check bluetooth io_regulator voltage: 1800000
[470193.118153] sunxi-bt bt.28: block state already is 0 </code></pre>
<br />
We can now run one of the bluez commands to check if the bluetooth adapter was recognised and is available for us:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> hcitool dev
</code></pre>
<br />
If everything is in order with your setup you should see an output like the one below and you can continue on to the next section:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ubuntu@pine64:~$ hcitool dev
Devices:
hci0 00:1F:20:51:CC:AA
</code></pre>
<br />
If you don't see any devices listed then you will have to do some work to enable the Bluetooth adapter. You should have a utility installed called rfkill that is used to enable and disable wireless devices. If it's not installed you can install it with the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo apt-get install rfkill </code></pre>
<div>
<br />
Run the following command to see your connection status:</div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ubuntu@pine64:~$ rfkill list
0: sunxi-bt: Bluetooth
Soft blocked: Yes
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
2: phy1: Wireless LAN
Soft blocked: no
Hard blocked: no
3: hci0: Bluetooth
Soft blocked: Yes
Hard blocked: no
</code></pre>
<div>
<br /></div>
<div>
The following command will remove the soft block on the Bluetooth adapter:</div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo rfkill unblock bluetooth </code></pre>
<div>
<br /></div>
<div>
Now run the "rfkill list" command again and you should see the soft block has been removed.<br />
<br /></div>
<div>
Success! The Bluetooth output has been enabled and we should be able to see available Bluetooth devices if we run the hcitool dev command again. We can confirm the device is working by scanning for available Bluetooth devices:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> hcitool scan
</code></pre>
<br /></div>
<div>
The above command will scan for regular Bluetooth devices but will not be able to to see Low Energy (BLE) devices. In order to scan the available BLE devices we need to run the command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo hcitool lescan
</code></pre>
<br />
<br /></div>
<h2>
Testing The Script</h2>
Typically we would do a hcitool scan to get a devices MAC address, but the csrmesh network doesn't allow us to do this (at least in my setup). I've connected to the CSRMesh network from my Windows laptop and used that connection to gather the device address to include in the script.<br />
The address I grabbed from my PC was: <i>BTHLE\Dev_43c55b040006</i><br />
<div>
<br /></div>
The Github documentation tells us to format the command in the following way:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ./bin/csrmesh-cli move --pin 8888 --dest 43:c5:5b:04:00:06 --objid 1 --position 255
</code></pre>
<br />
You need to make sure you are running this command from within the csrmesh folder that was cloned earlier. If everything worked you should see your Move unit move to the set position and the output:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> Running: gatttool -b 43:c5:5b:04:00:06 --char-write-req -a 0x0021 -n 0fe2bd00809bb9d83b76b48585673a77b747ff
Characteristic value was written successfully </code></pre>
<i><br /></i>
<b><i>Note: The only gotcha here is the pin for the Move units. Here you will need to remember the password you set to the CSRMesh network when you first set up your move unit. If like me you have forgotten this, perform a factory reset on the unit by removing the battery, hold down the stop key then re-insert the battery. The notification light on the bottom of the device should be on solid. Keep holding the stop key for at least 5 seconds at which point the device should be reset. In my experience you don't get any feedback that it has performed the reset. With the device having been factory reset you can restart the Android app and enter a new password.</i></b><br />
<br />
The next step here is to now enable the device for use with OpenHAB.<br />
<br />
<br />
<i><b>UPDATE:</b></i><br />
<i>I've written a post on how to get this script working with openHAB <a href="https://andrew-klimovski.blogspot.com.au/2017/04/home-automation-teptron-move-control-from-openhab.html">here</a></i></div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com8tag:blogger.com,1999:blog-1558655160235390677.post-65591905791456921762017-03-11T01:02:00.000-08:002017-03-11T17:18:42.156-08:00HOME AUTOMATION: OpenHAB2 on the Raspberry Pi 3After spending a bunch of time messing with the Pine64 getting it up and running and installing OpenHAB2, I accidentally unplugged power while the device was on and it caused my installation to no longer boot :-( This is not the first time some minor error has cause my device to stop booting but it's going to be the last, I'm moving to a Rapsberry Pi 3.<br />
<br />
While the Raspberry Pi is not immune to this type of issue, I already use a Raspberry Pi 1 and have lost power while the system is up over 100 times and I've only ever corrupted one SD card over the last four years. I realise this is not something I can guarantee, but the Pine64 has been nothing but a hassle since it was delivered.<br />
<br />
<br />
<h2>
Installing OpenHAB2</h2>
Instead of going through the pain of a manual install and configuration of OpenHAB like I had to with my Pine64 I've decided to go with <a href="http://docs.openhab.org/installation/openhabian.html">OpenHABian</a>. This image is supposed to be a self configuring installation of OpenHAB on the Raspberry Pi.<br />
<br />
As usual I didn't bother to read the instructions and so decided that something must be wrong with the installation when it didn't respond to SSH connection request after I turned it on. I found out the hard way that it takes around 45 minutes for first boot! Not what I was expecting. Once I let it run through the first boot procedure I was able to SSH in with:<br />
username: openhabian<br />
password: openhabian<br />
<br />
Once the image has booted for the first time I ran the script:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo openhabian-config
</code></pre>
<br />
From here I installed all of the packages required for OpenHAB, including OpenHAB2!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz-V32YG1-zeF43ED2tnxS3ftq0QKpGDwqr7w-qff68Pq1BNw5wYPI5Yqzk9rPMWNCG_EM5tuEt1P4zm4TYow7GSJgnykygZXemgbA4DHYsZriIy05dFI-egukaBa4-f5Sr1DFXXEqHNFo/s1600/RPi_OpenHAB.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz-V32YG1-zeF43ED2tnxS3ftq0QKpGDwqr7w-qff68Pq1BNw5wYPI5Yqzk9rPMWNCG_EM5tuEt1P4zm4TYow7GSJgnykygZXemgbA4DHYsZriIy05dFI-egukaBa4-f5Sr1DFXXEqHNFo/s320/RPi_OpenHAB.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">OpenHABian on the RPi 3</td></tr>
</tbody></table>
<br />
<h2>
Bluetooth</h2>
<div>
By default the bluetooth does not work on the OpenHABian minimal installation, if you try to scan for bluetooth adapters you will get errors like "no default adapter".<br />
<br /></div>
<div>
I was able to enable the bluetooth on the Raspberry Pi 3 doing the following:</div>
<div>
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> openhabian@openHABianPi:~$ sudo apt-get install bluetooth bluez blueman
openhabian@openHABianPi:~$ sudo reboot
openhabian@openHABianPi:~$ hcitool dev
Devices:
hci0 B8:27:EB:15:64:58
</code></pre>
<br /></div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-24990406401148441312017-03-05T01:36:00.001-08:002017-03-05T01:36:41.205-08:00HOME AUTOMATION: OpenHAB2 on the Pine64I "bought" a Pine64 Pro with a WiFi/Bluetooth adapter on Kickstarter that I had originally planned to use as the home automation server to replace my RPi 1, but I was never really committed to the installation as the early builds for the Pine64 were pretty unstable.<br />
<br />
Things have developed and become more stable since then and with the recent release of OpenHAB2 it seemed like the right time to jump back in.<br />
<h2>
<br /></h2>
<h2>
<span style="font-size: large;">
Installation</span></h2>
I tried a few different builds to get the Bluetooth adapter working with no luck, there seem to be a lot of people complaining about the lack of support for the Bluetooth device on the forums. Because of that I decided to just stick with the most stable build of Linux for the Pine64, which at the time of writing is the <a href="http://wiki.pine64.org/index.php/Pine_A64_Software_Release#Ubuntu_Base_Image_.5B20160716-1.5D_by_longsleep">Ubuntu image</a>, and use a USB Bluetooth adapter if I needed to integrate Bluetooth in to my OpenHAB installation.<br />
<br />
<i><b>It's worth noting that there is an OpenHAB image for the Pine64 but I was never able to get this to boot so I abandoned it and started with a Ubuntu image.</b></i><br />
<br />
I downloaded and unzipped the image using 7zip and used Win32 Disk Imager to write the image to the SD card.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHAzaQPKzk53Y-czAQjpRvVrWZQFMuxowDLrAWlC-x3d6PG3OVrqYxvBCETvxiiigaFrEdZtpXc38n3-d9jgXJrdO8o2hBhLQatBQ9Ld9RWYZqsAFNXtnrcizlpGruyN-BziiOiw0E7HCO/s1600/Win32-Disk-Imager.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHAzaQPKzk53Y-czAQjpRvVrWZQFMuxowDLrAWlC-x3d6PG3OVrqYxvBCETvxiiigaFrEdZtpXc38n3-d9jgXJrdO8o2hBhLQatBQ9Ld9RWYZqsAFNXtnrcizlpGruyN-BziiOiw0E7HCO/s320/Win32-Disk-Imager.jpg" width="320" /></a></div>
<br />
<br />
<span style="font-family: inherit;">I plugged my device into the internet via ethernet for first boot so I could SSH in without having to set up the WiFi network.</span><br />
<span style="font-family: inherit;">Login to your router and find the IP address of your Pine64. Alternatively you could use an app for your phone like <a href="https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en">Fing Network Discovery Tool</a> to find the device IP address.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">I use <a href="http://www.putty.org/">Putty</a> to SSH in to my devices from my Windows machine. It's a nice little tool that allows a few different connection types including SSH and Serial and ability to save sessions for frequently used devices.</span><br />
While there is no location for a username you can add one to the saved session by typing the username in to the host name box as follows:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> ubuntu@192.168.1.151
</code></pre>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTvn8YajCry3LC-BsQMmfm0Dx-5Ng04iE2QH0f710CHrG_vXKkZEPVPmR-AzrLpkIgmUSwSSivx7FxlpJou0C4pRrbb37I9IHBQAWgDzVdGg9Eme4zvhyphenhyphenhiJSYCZqpycP5IV7Kn_IcvkcK/s1600/PuttyPine64.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTvn8YajCry3LC-BsQMmfm0Dx-5Ng04iE2QH0f710CHrG_vXKkZEPVPmR-AzrLpkIgmUSwSSivx7FxlpJou0C4pRrbb37I9IHBQAWgDzVdGg9Eme4zvhyphenhyphenhiJSYCZqpycP5IV7Kn_IcvkcK/s320/PuttyPine64.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">PuTTY Saved Session</td></tr>
</tbody></table>
<br />
The default password for the Ubuntu image is 'ubuntu'.<br />
<br />
<br />
<span style="font-family: inherit;">Reboot your device with the command:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo shutdown -r now
</code></pre>
<br />
<span style="font-family: inherit;">Install Java with the following commands:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee -a /etc/apt/sources.list.d/webupd8team-java.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
sudo apt-get update
sudo apt-get install oracle-java8-installer oracle-java8-set-default
</code></pre>
<br />
<span style="font-family: inherit;">
Now that Java is installed we can install the OpenHAB2 official release:</span><br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
echo 'deb http://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
sudo apt-get update
sudo apt-get install openhab2
</code></pre>
<br />
Start OpenHAB and add it to startup with the following commands:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo systemctl start openhab2.service
sudo systemctl status openhab2.service
sudo systemctl daemon-reload
sudo systemctl enable openhab2.service
</code></pre>
<br />
If everything installed and started correctly you should be able to navigate to the page:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> http://YOUR.DEVICE.IP:8080
</code></pre>
<br />
From here you should be able to follow the <a href="http://docs.openhab.org/tutorials/beginner/index.html">beginners guide</a> to get your device going.<br />
<br />
If you get stuck and need to work out what is happening with you OpenHAB installation you can view the log file with this command:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> tail -f /var/log/openhab2/openhab.log -f /var/log/openhab2/events.log </code></pre>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-50548726889167901932017-03-05T00:33:00.001-08:002017-03-05T00:33:38.156-08:00HOME AUTOMATION: Mounting network storage device on Raspberry PiI run a NAS storage device to serve up media content as well as a place to backup photos and videos.<br />
I've found it really handy to be able to connect to my network storage from my Raspberry Pi but it took me a while to work out the right configuration for my setup. Here are the steps I followed:<br />
<br />
<h2>
Raspberry Pi 1 Configuration:</h2>
Install the cifs-utils package. This is the package we need to connect the the network drive<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo apt-get install cifs-utils
</code></pre>
<br />
Make a directory where you would like to mount the network storage:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo mkdir /home/pi/NAS
</code></pre>
<br />
We are going to use two files to do the network drive mounting, the first file will store the network drive and mounting information and the second will hold the login credentials information:<br />
<ol>
<li>/etc/fstab - network drive information</li>
<li>/root/.servercred - hidden file with network credential information</li>
</ol>
<br />
The cifs-utils package creates a file named fstab that holds the network drive information.<br />
Edit the fstab file and add the network location and password:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo nano /etc/fstab
</code></pre>
<br />
To begin with you file should look something like this:<br />
<pre style="background: rgb(240, 240, 240); border: 1px dashed rgb(204, 204, 204); font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; width: 646.469px;"><code style="word-wrap: normal;"> proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, so no using swapon|off from here on, use dphys-swapfile swap[on|off] for that
</code></pre>
<br />
Add the following line to the bottom of the fstab file:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, so no using swapon|off from here on, use dphys-swapfile swap[on|off] for that
//192.168.1.100/ /home/pi/NAS cifs credentials=/root/.servercred,sec=ntlmv2,iocharset=utf8,file_mode=0777,dir_mode=0777 0
</code></pre>
<br />
Hit ctrl-x to exit nano, then type y and hit enter to save the file.<br />
Now we need to create the server credential information:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo nano /root/.servercred
</code></pre>
<br />
Add your username and password to this file (including network homegroup)<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> username=KLIMOVSKI\andrew
password=1234abcd
</code></pre>
<br />
If you get the error "sudo: nano: command not found" the you will need to install nano:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo apt-get install nano
</code></pre>
<br />
Finally, attempt to mount the network drive by typing:<br />
<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> sudo mount -a
</code></pre>
<br />
If everything worked the command should execute and you should not see any output. You can now test the network drive by navigating to the directory we created earlier.<br />
<br />Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com1tag:blogger.com,1999:blog-1558655160235390677.post-26993789104502619922017-02-10T21:16:00.001-08:002017-02-11T00:31:41.558-08:00ROBOTICS: Compiling the 7Bot Arduino code for the ESP8266 - BangBot<div>
<div>
<a href="https://andrew-klimovski.blogspot.com.au/2017/02/robotics-desktop-six-axis-robot-arm.html"><span style="color: blue;">I wrote previously</span></a> about building a desktop robot arm that I started calling the BangBot (because I bought it from bangood). I finished with a brief overview of the existing open source software solutions including some software written for similar desktop robots. </div>
<div>
In this post I'll investigate the specifics of the 7Bot software written for a similar looking desktop bot. </div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<h2>
7Bot Software:</h2>
</div>
<div>
The software comes in two components:</div>
<div>
<ul>
<li>Arduino code to run the robot</li>
<li>Desktop code that passes positions to the robot and includes a simulator/visualiser. </li>
</ul>
</div>
<div>
<br /></div>
<div>
I'll be focussing on the embedded software that controls the arm over serial communications. You can find more info on the serial communications protocol <a href="https://uploads.strikinglycdn.com/files/26269642-1fad-4208-88cf-a2f30b21bb95/Communication%20Instruction%20(v1.0.1).pdf">here</a>.</div>
<div>
<br /></div>
<a href="https://github.com/klimbot/7Bot-Arduino-lib"><span style="color: blue;">I forked</span></a> the github repo of the 7Bot Arduino software which has been written specifically for the Arduino Due. This board has some special features that your run-of-the-mill Arduino has like a 12 bit DAC on 12 channels and high clock speed.<br />
<br />
As this isn't a typical feature of low cost Arduinos I'm pretty sure I'll end up needing an external servo driver board, but until I hit a wall I'll try to get everything running off the one board.<br />
<div>
<br /></div>
<div>
My gut feel is that I'll want to use a board with some decent clock speed to make sure the Inverse Kinematics equations are computed quickly enough to give smooth robot motions when operating in Cartesian mode. This is because the robot needs to interpolate the path between points and calculate do the IK calculations to update joint angles at at least 15fps for smooth motion.</div>
<div>
For this reason I'm going to try to get it compiling for an ESP8266 as the base clock speed is 80MHz and is capable of going up to 160MHz. I'll need to do some research to understand how this clock speed relates to real world computational speed and how that compares to the Due.<br />
<br />
<br />
<h2>
Embedded Device Specs:</h2>
<div>
I need to compare the ESP8266 with the Due to understand how it might handle the code designed for the 7Bot and the Due board:</div>
<br />
<a href="https://en.wikipedia.org/wiki/ESP8266">ESP8266</a><br />
<ul>
<li><a href="https://en.wikipedia.org/wiki/IEEE_802.11" title="IEEE 802.11">IEEE 802.11</a> b/g/n <a href="https://en.wikipedia.org/wiki/Wi-Fi" title="Wi-Fi">Wi-Fi</a></li>
<li>32-bit <a href="https://en.wikipedia.org/wiki/Reduced_instruction_set_computing" title="Reduced instruction set computing">RISC</a> CPU (80 or 160MHz)</li>
<li>64 KB of instruction RAM, 96 KB of data RAM</li>
<li>External QSPI flash - 512 KB to 4 MB* (up to 16 MB is supported)</li>
<li>16 <a href="https://en.wikipedia.org/wiki/General-purpose_input/output" title="General-purpose input/output">GPIO</a> pins</li>
<li>1 10-bit <a href="https://en.wikipedia.org/wiki/Analog-to-digital_converter" title="Analog-to-digital converter">ADC</a> (analog input pins)</li>
<li>1 <a href="https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter" title="Universal asynchronous receiver/transmitter">UART</a> on dedicated pins, plus a transmit-only UART can be enabled on GPIO2</li>
</ul>
<br />
<a href="https://www.arduino.cc/en/Main/arduinoBoardDue"><span style="color: blue;">Arduino Due</span></a><br />
<ul>
<li>32-bit ARM core (84 MHz)</li>
<li>96 KB (two banks: 64KB and 32KB)</li>
<li>512 KB all available for the user applications</li>
<li>54 (of which 12 provide PWM output) </li>
<li>12 12-bit ADC (analog input pins)</li>
<li>3 UARTs</li>
</ul>
<div>
<br /></div>
I found that there were already some basic benchmark comparing some basic operations of the ESP and the Due <a href="http://forum.arduino.cc/index.php?topic=337653.0"><span style="color: blue;">on the Arduino forums</span></a>:<br />
<br />
<span class="bbc_bold">BENCHMARK RESULTS (smaller values are better):</span><br />
<table border="2" bordercolor="white" cellpadding="3" cellspacing="3" style="background-color: white; width: 100%;"><tbody>
<tr><th><br /></th><th><span style="text-align: start;">ESP8266 @160MHz</span></th><th><span style="text-align: start;">Arduino Due @84MHz</span></th></tr>
<tr><td><b>float [ms]</b></td><td align="center">216</td><td align="center">636</td></tr>
<tr><td><b>int [ms]</b></td><td align="center">28</td><td align="center">28</td></tr>
</tbody></table>
<br />
<br />
<h2>
Code Changes</h2>
As I was making my changes I found that some changes were pushed to the main repo that allowed for more typical flash storage using the EEPROM library. First problem solved.<br />
<br />
In order to get the project to compile I also needed to change the analogWriteResolution function to the analogWriteRange function available on the ESP8266. I've not yet tested this at PWMRANGE 4096.<br />
<br />
The last issue I overcame was a compiler optimization issue that was giving me a linkage error:<br />
<i>xtensa-lx106-elf-gcc: error: libraries\Arm7Bot\Arm7Bot.a: No such file or directory</i><br />
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW9PqsmsxI2PfjWL-7T2YxZci1im3nHlmBAC48eeLU_gPMaq5QVdPFjeQHT-moLD8KcGU3eCxbBbMXbEDmhJqvtWq3Hi93XZfEJnUsO9GBetubWdo8ulvgX2IVer2pJ3sQoHPHa4AQvN98/s1600/CompileError2.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="58" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW9PqsmsxI2PfjWL-7T2YxZci1im3nHlmBAC48eeLU_gPMaq5QVdPFjeQHT-moLD8KcGU3eCxbBbMXbEDmhJqvtWq3Hi93XZfEJnUsO9GBetubWdo8ulvgX2IVer2pJ3sQoHPHa4AQvN98/s320/CompileError2.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 12.8px;">xtensa-lx106-elf-gcc: error:</td></tr>
</tbody></table>
Solved this one by commenting out the <i>dot_a_linkage=true</i> line in the library.properties file.<br />
<div>
The software now compiles for an ESP8266, now to get in to the testing.<br />
<div>
<br />
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
</div>
</div>
</div>
</div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com1tag:blogger.com,1999:blog-1558655160235390677.post-82509735802143541332017-02-06T02:26:00.003-08:002017-02-06T18:35:10.867-08:00ROBOTICS: Desktop six axis robot arm - BangBot<div dir="ltr">
Desktop robot arms have been generating of lot of Kickstarter excitement lately offering folks a chance to dabble in the art of hobby robotics without making a significant investment. I've been following them for a while and while the cost is definitely coming down, they are still typically start at around 300USD.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
There are a few open source desktop robot arm kits that have been through Kickstarter, here are a couple of my favorites:</div>
<div dir="ltr">
</div>
<div dir="ltr">
</div>
<br />
<br />
<ul>
<li><a href="http://store.ufactory.cc/uarm-metal/">uArm</a> - 4 axis parallel mechanism robot arm based on the <a href="http://new.abb.com/products/robotics/industrial-robots/irb-460">ABB IRB 460 PalletPack</a> robot</li>
<li><a href="http://www.7bot.cc/">7Bot</a> - 6 axis serial link robot based off the Kuka</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjULkEA7o_iyTWhj1TWOU6nXMUZ62IexhhAczrMzS-tkTAQyPn9Bib0bYGeCVyGNukoCINLriuLfzelmzH-DoHfFJhEG_-tfIilyIzEOxLa_49im-b9EGT5qr6mwpGWXsS042WONTijZTIu/s1600/uarm-4-degrees-of-freedom-robotic-metal-arm.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjULkEA7o_iyTWhj1TWOU6nXMUZ62IexhhAczrMzS-tkTAQyPn9Bib0bYGeCVyGNukoCINLriuLfzelmzH-DoHfFJhEG_-tfIilyIzEOxLa_49im-b9EGT5qr6mwpGWXsS042WONTijZTIu/s320/uarm-4-degrees-of-freedom-robotic-metal-arm.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">uArm 4 axis robot arm</td></tr>
</tbody></table>
<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPsYFw4EoZA0K2DyWDR47IAJMng7SBjaCM5ep6LmglG5iEw7amd1cKdqThi3JFHD4Ah8rqVrf_mu0O1sKEqMW-TbVsbgfdu25mduz12QVvp24PuMf95qhCFCl2_w3dEknJDokKzmuvaqeO/s1600/7Bot.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="281" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPsYFw4EoZA0K2DyWDR47IAJMng7SBjaCM5ep6LmglG5iEw7amd1cKdqThi3JFHD4Ah8rqVrf_mu0O1sKEqMW-TbVsbgfdu25mduz12QVvp24PuMf95qhCFCl2_w3dEknJDokKzmuvaqeO/s320/7Bot.JPG" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">7Bot 6 Axus robot arm</td></tr>
</tbody></table>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div dir="ltr">
As with most of the good open source stuff the Chinese manufacturers seemed to have jumped on the bandwagon and started to manufacture replica kits and knockoffs. You can typically pick up a good knockoff bargain on sites like <a href="https://www.aliexpress.com/">AliExpress</a> or <a href="http://www.banggood.com/">Bangood</a>. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<h2>
Hardware:</h2>
<div dir="ltr">
Recently I came across <a href="http://www.banggood.com/DIY-6DOF-Aluminum-Robot-Arm-6-Axis-Rotating-Mechanical-Robot-Arm-Kit-p-1085275.html">this</a> mini desktop robot arm on <a href="http://bangood.com/">bangood.com</a> that uses hobby servos to create a six degrees of freedom robot arm. As I've seen with <a href="http://forums.trossenrobotics.com/showthread.php?7884-AliExpress-Hexapod">a robot hexapod</a> I bought from AliExpress based off the <a href="http://www.robotshop.com/en/lynxmotion-phoenix-3dof-hexapod---black-no-servos---electronics.html?gclid=Cj0KEQiA2uDEBRDxurOO77Cp-7kBEiQAOUgKV5kwaRPZCdQTQpwd4zNI4m0VPT42X3gbMhxxnU5SYOQaAtYw8P8HAQ">Lynxmotion Phoenix hexapod</a>, the hardware kit will most likely be a slight variation of the original and offer no software support. </div>
<div dir="ltr">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjetGOss3Uwxji4KgzSpgcq8tBltVmYJIDPXcAK_QvWhwAYGKwrZVk5jf_uNtuBEdHUqhPoVV2oKbn-to1zNTivfhjukZZMIyi3JjROEP5sQ2WfV5Ko_MSAGvWhMuFhq9zEmwOHijF7w4vN/s1600/6dofArm.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjetGOss3Uwxji4KgzSpgcq8tBltVmYJIDPXcAK_QvWhwAYGKwrZVk5jf_uNtuBEdHUqhPoVV2oKbn-to1zNTivfhjukZZMIyi3JjROEP5sQ2WfV5Ko_MSAGvWhMuFhq9zEmwOHijF7w4vN/s320/6dofArm.JPG" width="270" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">BangBot knockoff of the 7Bot</td></tr>
</tbody></table>
I've got a few servos knocking about from some old projects so for the most part I should be set, but as I've seen with other projects it's probably going to pay off to have a powerful digital servo down the bottom of the kinematic chain. With serial link robots the joint at the bottom off the robot will be carrying the most load so I thought it would be wise to invest in something a little more powerful than I had lying around. I went for the <a href="http://www.banggood.com/JX-PDI-6221MG-20KG-Large-Torque-Digital-Coreless-Servo-For-RC-Model-p-973947.html">PDI-6221MG</a> digital servo from Bangood with 20kg/cm at 6v.<br />
<br />
<br />
<h2>
Software:</h2>
<div dir="ltr">
I'm not expecting any software support so while I wait for the kit to arrive in the mail I've started to investigate any open source software solutions rather that starting from stratch with my own. There are a few packages out there, but seeing as the hardware is most similar to the 7Bot I thought I would <a href="https://github.com/7Bot">start there</a>.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
The most important info when trying to match the existing software to this robot is the way the joints are oriented on the robot. Simply saying that the arm is six axis isn't enough, we need to know joint lengths and actuator location and orientations to make sure the inverse kinematics are compatible. </div>
<div dir="ltr">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHreJjzBJHywcLFh4s-RZQDx5P5eWKJZPH3ugyZWvzgMiVmvrheJZgbitepqtB_sg7aWJmPC1WOdxzP1rrRPd0tq5O0YO8X_5rIYYwhJ1SVyL3IEr9semgye6uLTxYKZQQcz0U0yxfhz9C/s1600/jmr_005_03_031010_f005.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="140" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHreJjzBJHywcLFh4s-RZQDx5P5eWKJZPH3ugyZWvzgMiVmvrheJZgbitepqtB_sg7aWJmPC1WOdxzP1rrRPd0tq5O0YO8X_5rIYYwhJ1SVyL3IEr9semgye6uLTxYKZQQcz0U0yxfhz9C/s320/jmr_005_03_031010_f005.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Serial link kinematic chain</td></tr>
</tbody></table>
<br />
<div dir="ltr">
<br /></div>
<div dir="ltr">
The 7Arm robot seems closest in design to the BangBot robot arm so this seemed like a good starting place for the software. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Taking a look through the code it seems as though the Inverse Kinematics (IK) parameters aren't hard coded so it should allow me to make some minor changes to joint parameters and get the software up and running. I won't go through the specifics of generating a set of inverse kinematic equations for a robot arm, but if you want to read more on the topic take a look at the pages <a href="https://www.google.com.au/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=serial+link+robot+inverse+kinematics">here</a>.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
At the moment my biggest issue with compiling the code is my lack of Arduino SAM (32-bit ARM Cortex-M3) boards lying around, so I'll have to try to convert the code to run on a more conventional Arduino device. A the moment I'm thinking maybe the ESP8266 could be a good fit as it is also a 32 bit MCU and has a 160MHz clock frequency as well as EEPROM storage. I'll see how I go making the port, I may need to include a servo control board if the ESP8266 can't handle the task, I've never attempted any servo control with the ESP8266.</div>
Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0tag:blogger.com,1999:blog-1558655160235390677.post-81461963581077312812017-02-02T01:58:00.000-08:002017-02-02T01:58:37.152-08:00DRONE: Safe LiPo Charging <div dir="ltr">
I've owned a few toys with Lithium Polymer batteries in the past and never really been aware of the risks associated with charging the things until recently. I've heard of LiPo fires and seen the YouTube videos but only ever associated the mishaps with improper use. It wasn't until I got in to racing quads and had my first big crash that I though of 'improper use' and that I could be putting myself and family unnecessarily at risk by charging them in the corner of my lounge room. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
There are number of places you can read up on LiPo battery charging safety including safe storage, here are my favorites.</div>
<ul>
<li><a href="http://thedronegirl.com/2015/02/07/lipo-battery/">The Drone Girl tips on LiPo charging safety</a></li>
<li><a href="http://www.dronethusiast.com/ultimate-drone-battery-care/">Dronethusiast general battery safety guide</a></li>
<li><a href="https://www.rcgroups.com/forums/showthread.php?1436092-Lipo-storage-voltage">RC Groups forum discussion on safe storage voltage</a></li>
</ul>
<div>
<br /></div>
<h3 dir="ltr">
The main points:</h3>
<ol>
<li>***Visually inspect batteries after a crash. DO NOT CHARGE DAMAGED CELLS***</li>
<li>Charge on a non combustible surface (concrete floor works well)</li>
<li>Charge LiPos in a fireproof container such as a LiPo storage bag or ammo tin</li>
<li>Stop charging after you batteries are fully charged </li>
<li>If you lipo catches fire make sure you don't breath the toxic fumes, so charge in a well ventilated area</li>
<li>Store LiPo batteries at safe storage voltage to prevent possible damage to cells </li>
</ol>
<div dir="ltr">
Really the most important thing to remember is not to charge damaged cells. This includes cells that have been punctured, dented or even batteries that have puffed up. This is the biggest thing you can do to prevent a LiPo fire.<br />
<br />
To cover points 2 and 3 most American sites suggest an ammo tin as a good storage area but these are hard to come by in Australia, so I got creative and came up with my own solution:</div>
<div dir="ltr">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOPZJxemY446djdI3I1Qdo7YaISZzEffblxbkEHyMRcIkqcdun8Ll-5CZzKW5cSDC_pz9GJ6xo_rpQCMF6o8GgrOcLI8JtCzuQMtTjK_AEPW5IFKLjkEqkZlLOA652y3PhTssHnX2h8MvI/s1600/IMG_20170107_190451.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOPZJxemY446djdI3I1Qdo7YaISZzEffblxbkEHyMRcIkqcdun8Ll-5CZzKW5cSDC_pz9GJ6xo_rpQCMF6o8GgrOcLI8JtCzuQMtTjK_AEPW5IFKLjkEqkZlLOA652y3PhTssHnX2h8MvI/s320/IMG_20170107_190451.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Discharging LiPo batteries for safe storage</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYJnQIt1NoUiew4Z_FLldJfewiGlglC0YxJ5_3DhmrC1KXMS0aHrR1fbXzn3kokGNeEnUlUli5CfmI5bfeK6yMPLiMgK_d3wemCl-2MEdINW_yiy7jOE5ZTUCCW4uKbCL12PDCr918cmnQ/s1600/IMG_20170107_190510.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYJnQIt1NoUiew4Z_FLldJfewiGlglC0YxJ5_3DhmrC1KXMS0aHrR1fbXzn3kokGNeEnUlUli5CfmI5bfeK6yMPLiMgK_d3wemCl-2MEdINW_yiy7jOE5ZTUCCW4uKbCL12PDCr918cmnQ/s320/IMG_20170107_190510.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Charger mounted to outside of the charge box</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyuRz2a3dC-1ppVR_4w__hXvh1fNTW9jvi4CQ6_lTAkYM38I09GJscnx5Ds4iUN0GnnSPbCqcf43CK9JQbT0n791auJh89EFKnvuek9PnHusBz1b8twx5IOjdzAWsjMFbTfCEvaEeuVZZW/s1600/IMG_20170107_190458.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyuRz2a3dC-1ppVR_4w__hXvh1fNTW9jvi4CQ6_lTAkYM38I09GJscnx5Ds4iUN0GnnSPbCqcf43CK9JQbT0n791auJh89EFKnvuek9PnHusBz1b8twx5IOjdzAWsjMFbTfCEvaEeuVZZW/s320/IMG_20170107_190458.jpg" width="320" /></a></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
I converted a cash box to charging/discharging box to hit points 2,3 and 6.</div>
<div dir="ltr">
I haven't had a lipo fire (yet) so this solution isn't tested, but it goes a long way towards safety. </div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
<h4>
Bill of Materials:</h4>
</div>
<ul>
<li><a href="https://www.bunnings.com.au/sandleford-250mm-black-cash-box_p4223052">Sandleford cash storage box ($20) </a></li>
<li><a href="http://www.banggood.com/AOK-3-in-1-150W-Discharger-Voltage-Tester-Balancer-For-Lipo-Battery-p-1051214.html">Battery discharger (18USD)</a></li>
<li><a href="http://www.banggood.com/Amass-XT60-D-XT60-Male-To-T-Plug-Female-Connector-Converter-Adapter-p-979217.html">XT60 to Dean T plug adapter (2USD)</a></li>
<li>Metal mount/heat sync for bulb mounting</li>
<li><a href="https://www.bunnings.com.au/hpm-24-hour-compact-timer_p7034589">Power timer</a></li>
</ul>
<div>
Total spend was a little over $45</div>
<div>
<br /></div>
I now charge my batteries in the garage and use the power timer set to 4h to hit points 3 and 4. Although it's not a perfect setup to stop charging the batteries after they are full it's definitely going a long way towards safe charging of my LiPo batteries.<br />
<br />
<br />
<h3>
Update: </h3>
I'm trying to come up with a way to use a power monitor that turns off the point once it sees a minimum power consumption coming from the socket. I'm experimenting with a Belkin WeMo Insight device that seems to look promising, although it's not the most cost effective device at $70 a pop. This should get me another step towards safe charging of my LiPo batteries.Andrew Klimovskihttp://www.blogger.com/profile/11631298643599994005noreply@blogger.com0